Как создать комбинацию клавиш в Win32 API? - PullRequest
1 голос
/ 25 января 2011


У меня есть этот код, который имитирует нажатие клавиши окна. Но как бы мне сделать это, чтобы нажать клавишу Windows + D, по сути, показывая рабочий стол.

void ShowDesktop(void)
{


  // Simulate a key press
     keybd_event( VK_LWIN,
                  0x5B,
                  KEYEVENTF_EXTENDEDKEY | 0,
                  0 );

  // Simulate a key release
     keybd_event( VK_LWIN,
                  0x5B,
                  KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
                  0);

}

1 Ответ

7 голосов
/ 25 января 2011

Вы должны вызвать функцию keybd_event со значением виртуального ключа и кодом сканирования оборудования для клавиши D , чтобы получить это значение, вы можете использовать MapVirtualKey функция.

Попробуйте этот образец.

//simulate the Win key press
    keybd_event(VK_LWIN, 0x5B, 0, 0);
//simulate the 'D' key press,the 0x44 is the Virtual key value for the 'D' key, the 0x20 vaue is the hardware scan code for the 'D' key
    keybd_event(0x44, 0x20, 0, 0);
//simulate the 'D' key release
    keybd_event(0x44, 0x20, KEYEVENTF_KEYUP, 0);
//simulate the Win key release
    keybd_event(VK_LWIN, 0x5B, KEYEVENTF_KEYUP, 0);
...