2010-09-09 15 views

Répondre

1

Bon, alors j'ai une solution pour vous que je vérifiais œuvres. Vous aurez besoin d'une bibliothèque C#, et un peu de travail supplémentaire est nécessaire, mais pas beaucoup. Créez une bibliothèque de classe C# et ajoutez une classe appelée 'MyHooks' et ajoutez une référence à System.Windows.Forms.dll et à la bibliothèque à laquelle je vous ai lié. Votre programme principal qui utilisera ceci référencera cette bibliothèque C# et System.Windows.Forms.

namespace HookManager.Interface { 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Gma.UserActivityMonitor; 
using System.Windows.Forms; 

public static class MyHooks { 

    public static void HookControlC(KeyEventHandler keyDown, KeyEventHandler keyUp) { 
     HookManager.KeyDown += keyDown; 
     HookManager.KeyUp += keyUp; 
    } 

} 
} 

maintenant dans votre programme peut faire quelque chose comme:

Imports hookmanager.interface 
Imports System.Windows.Forms 

Module Module1 

Sub Main() 
    MyHooks.HookControlC(AddressOf ControlC_KeyDown, AddressOf ControlC_KeyUp) 

    While True 
     Application.DoEvents() 
    End While 
End Sub 

Private m_ControlKeyPressed As Boolean = False 

Private Sub ControlC_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) 
    If e.KeyValue = 162 OrElse e.KeyValue = 163 Then 
     m_ControlKeyPressed = True 
    End If 
    If m_ControlKeyPressed Then 
     If e.KeyCode = Keys.C Then 
      Console.WriteLine("You captured, control c!") 
      Console.WriteLine(Clipboard.GetText()) 
     End If 
    End If 
End Sub 

Private Sub ControlC_KeyUp(ByVal sender As Object, ByVal e As KeyEventArgs) 
    If m_ControlKeyPressed Then 
     If e.KeyValue = 162 OrElse e.KeyValue = 163 Then 
      m_ControlKeyPressed = False 
     End If 
    End If 
End Sub 

End Module 
0

Vous devez créer un crochet de bas niveau. This CodeProject example fonctionne parfaitement et je l'ai utilisé moi-même à des fins d'apprentissage. J'ai légèrement modifié le code, mais voici un exemple simple de quelque chose que vous pourriez faire avec cette bibliothèque. Encore une fois, ceci est juste un exemple et peut ne pas refléter le code final, mais pourrait être facilement modifié pour capturer Control + C, et la bibliothèque est bien documentée.

private static bool m_ControlKeyPressed = false; 

    private static void ControlC_KeyDown(object sender, KeyEventArgs e) { 
     if (e.KeyValue == 162 || e.KeyValue == 163) { 
      m_ControlKeyPressed = true; 
     } 
     if (m_ControlKeyPressed) { 
      if (e.KeyCode == Keys.C) { 
       e.SuppressKeyPress = true; // Suppress, or do something with it 
      } 
     } 
    } 

    private static void ControlC_KeyUp(object sender, KeyEventArgs e) { 
     if (m_ControlKeyPressed) { 
      if (e.KeyValue == 162 || e.KeyValue == 163) { 
       m_ControlKeyPressed = false; 
      } 
     } 
    } 

Conversion à Vb.Net

Private Shared m_ControlKeyPressed As Boolean = False 

Private Shared Sub ControlC_KeyDown(sender As Object, e As KeyEventArgs) 
    If e.KeyValue = 162 OrElse e.KeyValue = 163 Then 
     m_ControlKeyPressed = True 
    End If 
    If m_ControlKeyPressed Then 
     If e.KeyCode = Keys.C Then 
      e.SuppressKeyPress = True 
     End If 
    End If 
End Sub 

Private Shared Sub ControlC_KeyUp(sender As Object, e As KeyEventArgs) 
    If m_ControlKeyPressed Then 
     If e.KeyValue = 162 OrElse e.KeyValue = 163 Then 
      m_ControlKeyPressed = False 
     End If 
    End If 
End Sub 
+0

merci essai mal ce maintenant. – Joseph

+0

oui cela ne fonctionnera pas pour moi, ce code n'est pas vb.net, vous pouvez le dire à partir de; à la fin, plus "private static" – Joseph

+0

Vous avez juste besoin de référencer la bibliothèque dans votre projet, le code que vous allez écrire sera Vb.Net, qui est extrêmement facile à convertir car leurs langues sont extrordinairement similaires. De plus, il y a des convertisseurs sur le web qui vont convertir C# en Vb.Net et vice-versa. Vous devez juste faire un petit effort. –