Windows Hotkey

Gast #3811705
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
Gast #3811758
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
}
Gast #3811770
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren