Forum: PC-Programmierung Windows Hotkey


von heinz (Gast)


Lesenswert?

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

von Eysenbarth (Gast)


Lesenswert?

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
}

von heinz (Gast)


Lesenswert?

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.

von Eysenbarth (Gast)


Lesenswert?

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.

von heinz (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.