VB .net Global Keyboard Hook

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von danielwonst.

    VB .net Global Keyboard Hook

    Hallo Leute,

    bin ein wenig verzweifelt, da ich das mit dem Hook nicht auf die Kette bekommen.
    Ich habe schon 15 verschiedene Codes ausprobiert, leider funktioniert immer irgendwas nicht.

    Nehmen wir mal den folgenden Code:
    sim0n.wordpress.com/2009/03/28/vbnet-keyboard-hook-class/

    Bei diesem schmeißt er mir einen Stack Overflow. :/

    Bei manch anderen Codes, hooked er die komplette Tastatur (ist ja erstmal gut) bloß krallt sich das Tool dann das komplette Event und gibt diese nicht mehr weiter...
    Bsp. (Ich gebe ein "a" ein. Das Programm meldet "a" wurde gedrückt. Leider wird das "a" nicht im Notepad angezeigt. (es soll aber nur das Event "kopiert" werden. Nicht komplett übernommen)

    Derzeit entwickele ich ein Programm, dass für Justizfachangestellte einen Realtime "Chat" anbietet. Wobei das geschrieben Manuscript zeitgleich bei einem weiteren Justizfachangestellten angezeigt werden soll
    zur Satzanalyse.

    Hoffe ihr könnt mir helfen. :)
    Hast du in den Projekeigenschaften unter Debuggen das Häkchen bei "Visual Studio-Hostingprozess aktivieren" entfernt?
    Kann wer mir den Java Code übersetzen? Verstehe ihn nicht zu 100%
    Java:

    Java-Quellcode

    1. private IKeyboardMouseEvents m_GlobalHook;
    2. public void Subscribe()
    3. {
    4. // Note: for the application hook, use the Hook.AppEvents() instead
    5. m_GlobalHook = Hook.GlobalEvents();
    6. m_GlobalHook.MouseDownExt += GlobalHookMouseDownExt;
    7. m_GlobalHook.KeyPress += GlobalHookKeyPress;
    8. }
    9. private void GlobalHookKeyPress(object sender, KeyPressEventArgs e)
    10. {
    11. Console.WriteLine("KeyPress: \t{0}", e.KeyChar);
    12. }
    13. private void GlobalHookMouseDownExt(object sender, MouseEventExtArgs e)
    14. {
    15. Console.WriteLine("MouseDown: \t{0}; \t System Timestamp: \t{1}", e.Button, e.Timestamp);
    16. // uncommenting the following line will suppress the middle mouse button click
    17. // if (e.Buttons == MouseButtons.Middle) { e.Handled = true; }
    18. }
    19. public void Unsubscribe()
    20. {
    21. m_GlobalHook.MouseDownExt -= GlobalHookMouseDownExt;
    22. m_GlobalHook.KeyPress -= GlobalHookKeyPress;
    23. //It is recommened to dispose it
    24. m_GlobalHook.Dispose();
    25. }


    Bis jetzt hab ich ihn so übersetzt
    .net VB

    VB.NET-Quellcode

    1. Imports Gma.System.MouseKeyHook
    2. Public Class KeyboardHook
    3. Dim m_GlobalHook As IKeyboardMouseEvents
    4. Public Sub Subscribe()
    5. ' Note: Für Anwendungen die Hook.AppEvents() hernehmen
    6. m_GlobalHook = Hook.GlobalEvents
    7. m_GlobalHook.KeyPress = (m_GlobalHook.KeyPress + GlobalHookKeyPress())
    8. End Sub
    9. Public Sub Unsubscribe()
    10. m_GlobalHook.KeyPress = (m_GlobalHook.KeyPress - GlobalHookKeyPress())
    11. 'Es ist Empfohlen diese auszublenden.
    12. m_GlobalHook.Dispose()
    13. End Sub
    14. Public Sub GlobalHookKeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)
    15. Debug.Print("Knopf: " & vbTab & "{0}", e.KeyChar)
    16. End Sub
    17. End Class



    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „danielwonst“ ()

    Wir haben hier übrigens für viele Sprachen einen Highlighter, bitte entsprechend verwenden: [Forum] Welche BBCodes (Tags) gibt es hier im Forum zum Einfärben von Quellcodes (Syntax-Highlighting)?
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    VB.NET-Quellcode

    1. Imports Gma.System.MouseKeyHook
    2. Public Class KeyboardHook
    3. Private m_GlobalHook As IKeyboardMouseEvents
    4. Public Sub Subscribe()
    5. ' Note: Für Anwendungen die Hook.AppEvents() hernehmen
    6. m_GlobalHook = Hook.GlobalEvents()
    7. AddHandler m_GlobalHook.MouseDownExt, AddressOf GlobalHookMouseDownExt
    8. AddHandler m_GlobalHook.KeyPress, AddressOf GlobalHookKeyPress
    9. End Sub
    10. Public Sub Unsubscribe()
    11. RemoveHandler m_GlobalHook.MouseDownExt, AddressOf GlobalHookMouseDownExt
    12. RemoveHandler m_GlobalHook.KeyPress, AddressOf GlobalHookKeyPress
    13. 'Es ist Empfohlen diese auszublenden.
    14. m_GlobalHook.Dispose()
    15. End Sub
    16. Public Sub GlobalHookKeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)
    17. Debug.Print("Knopf: " & vbTab & "{0}", e.KeyChar)
    18. End Sub
    19. public Sub GlobalHookMouseDownExt(byval sender as Object, byval e as MouseEventExtArgs)
    20. Console.WriteLine("MouseDown: {0}; System Timestamp: {1}", e.Button, e.Timestamp)
    21. End Sub
    22. End Class


    Müsste denk ich so passen

    BTW: Ist das oben kein Java sondern C#-Code ;)

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten