Hallo, ich versuch mich gerade daran an einem Slate PC den Home Button zu benutzen. Was ich will ist, dass wenn der Hotkey betätigt wird ein Popup Menü erscheint. Also registriere ich erstmal den Hotkey BOOL i = RegisterHotKey(NULL,1,0,0xff); ist ok ein Trap while (GetMessage(&msg, NULL, 0, 0)){ if (msg.message == WM_HOTKEY){ beim betätigen der Taste bin ich hier. Das eigentliche Problem - jede Sondertaste (Homebutoon, Volume up ..) hat als virtuelen Keycode den Wert 0xff. msg.lparam zeigt mir nur den virtuelen Keycode - keinen Scancode. Ich kann mein Fenster aktiv machen. ShowWindow(hwnd, SW_RESTORE); SetFocus(hwnd); und bekomme über WM_KEYUP den Scancode Das heist aber dass bei jeder Taste mein Fenster aufpoped und bei der falschen gleich wieder verschwindet -> nicht schön. Keyboardhook will ich auch nicht verwenden. MapVirtualKey liefert mir für den virtuelen Keycode 0xff eine 0 Hat da einer ein Idee? Gruss Heinz
Wie kommst du auf 0xff? VK_HOME ist 0x24. Dieses Minimalbeispiel funktioniert bei mir jedenfalls:
1 | int main() |
2 | { |
3 | if(RegisterHotKey( |
4 | NULL, |
5 | 1, |
6 | MOD_NOREPEAT, |
7 | VK_HOME)) |
8 | { |
9 | printf("Hotkey 'HOME' registered\n"); |
10 | } |
11 | |
12 | MSG msg = { 0 }; |
13 | while(GetMessage(&msg, NULL, 0, 0) != 0) |
14 | { |
15 | if(msg.message == WM_HOTKEY) |
16 | { |
17 | printf("WM_HOTKEY received\n"); |
18 | } |
19 | } |
20 | |
21 | return 0; |
22 | } |
Das ist nicht die Hometaste einer Tastatur sondern ein Button am Tablet ähnlich wie bei einem Androiden. Virtualkeycode 0xff Scancode 0x27 Ich habe sie jetzt mal mit Keytweak umgebogen auf D. Ist halt auch keine schöne Lösung.
heinz schrieb: > Das ist nicht die Hometaste einer Tastatur sondern ein Button am > Tablet ähnlich wie bei einem Androiden. Ah, sorry. Wusste ich, habe aber "Slate" irgendwie überlesen.
So - ich hab mir jetzt mal die VK_F24 ausgesucht In der Registry den Scancode 0xe027 auf 0x000076 umgebogen Hotkey auf 0x87 registriert und schon geht es. Das ist aber eine hässliche Losung :(
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.