hotkeys

csfungamer

Mitglied
Für mein klienes Programm will ich nen hotkey machen und habe im I-Net diesen Code gefunden.
Code:
Private Declare Function SendMessage Lib "user32" _
        Alias "SendMessageA" (ByVal hwnd As Long, _
        ByVal wMsg As Long, ByVal wParam As Long, _
        lParam As Any) As Long

Const VK_F1 = &H70
Const VK_F2 = &H71
Const VK_F3 = &H72
Const VK_F4 = &H73


Const WM_SETHOTKEY = &H32

Private Sub Command1_Click()
  Call SendMessage(Me.hwnd, WM_SETHOTKEY, VK_F4, 0&)
  Me.WindowState = 1
  MsgBox "Schließen Sie diese Mesagebox und " _
        & "betätigen Sie danach die F4-Taste!"
End Sub

Leider habe ich ihn nicht ganz verstanden und ich hoffe
ihr könnt mir sagen wie es geht das wenn ich F4 drücke ne Function ausgeführ wird.
:confused: :confused: :confused:
 
Die Windowsverarbeitung funktioniert über Ereignisse (Windows Messages).
Mit dem Befehl sendest du solch eine Message an das System.

Im Windowssystem gibt es eine Messageabarbeitungsroutine, die verteilt die Nachricht an die Anwendungen, Fenster oder Controls. Diese werden über ihre Handler eindeutig identifiziert und sind bei jeden Programm oder Windowsstart anders!

Der Funktionsaufruf registiert ein HotKey für deine Anwendung oder dein Fenster(Form) mit dem Parameter me.hwnd. Hwnd ist eine Kurzschreibweise für ein Handle auf ein Window. WM_SETHOTKEY sagt aus das Windows ein HotKey definieren soll.
VK_F4 definiert die Taste.
 
In der Windows API Dokumentation steht:

An application sends a WM_SETHOTKEY message to a window to associate a hot key with the window. When the user presses the hot key, the system activates the window.

Frei Übersetzt, wenn der Benutzer den Hotkey drückt, wird das Fenster aktiviert. Ich schätze mal er holt es nach vorn und das Fenster erhält den Focus.

Wenn du den Hotkey abfangen willst, musst wahrscheinlich SubClassing auf die Message WM_HOTKEY machen.

Eine Behandlung des KeyPressed Ereignisses in der Windows Forms wird vermutlich nicht ausreichen.
 
Und wo lag jetzt des Pudels Kern ?
Bitte immer auch die Lösung bekannt geben, damit andere Benutzer mit dem gleichen oder ähnlichem Problem, erfolgreich die Suchfunktion verwenden können. :)
Und der Thread kann, dann als erledigt abgehakt werden.
 
Zurück