Я только начал изучать C ++, поэтому, пожалуйста, дайте мне знать, если я не следую рекомендациям.Я пытаюсь написать программу, которая воспроизводит поведение Win + D , но только для окон на активном мониторе (с мышью).
Следующий код должен обнаружить нажатие клавиши WIN + D и подавить поведение по умолчанию, а затем вызвать пользовательскую функцию, чтобы свернуть окна.До сих пор мне удалось поймать нажатие клавиши WIN + D.
Если я нажимаю клавиши в следующем порядке:
WIN (нажмите), D (нажмите), D (отпустите), WIN (отпустите).
Тогда все работает как положено.
Но, если я нажимаю клавиши следующим образом:
WIN (нажмите), D (нажмите), WIN (отпустить), D (отпустить).
Затем откроется меню «Пуск».
Как это исправить?
Любая помощь / отзывы приветствуются.
HHOOK keyboardHook;
static bool isWindowsPressed = false;
LRESULT CALLBACK keyboardEventHandler(int code, WPARAM w, LPARAM l){
int key = ((PKBDLLHOOKSTRUCT) l)->vkCode;
bool isKeyDownEvent = (w == WM_KEYDOWN || w == WM_SYSKEYDOWN);
if(key == VK_LWIN || key == VK_RWIN) isWindowsPressed = isKeyDownEvent;
if(isWindowsPressed && isKeyDownEvent && key == 'D'){
std::cout << "FIRED" << std::endl;
//Minimize Windows
return 1;
}
return CallNextHookEx(keyboardHook, code, w, l);
}
int main(){
//ShowWindow(GetConsoleWindow(), SW_HIDE);
keyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, keyboardEventHandler, GetModuleHandle(NULL), 0);
MSG ms;
while(1){
PeekMessage(&ms, 0, 0, 0, 1);
}
return 0;
}