gpt4 book ai didi

c - 在没有控制台或窗口的应用程序中等待按键

转载 作者:太空宇宙 更新时间:2023-11-04 07:05:33 26 4
gpt4 key购买 nike

我需要一种方法来从没有控制台或 GUI 窗口的应用程序中获取按键。我目前正在使用 GetAsyncKeyState 进行轮询,但这会占用不必要的 CPU 时间。

有没有更好的解决方案?

注意:由于该应用程序没有控制台,所以我不能使用 getchar 或其他此类仅限控制台的函数。

最佳答案

这是一个 low level hook所以它从内核接收事件。这意味着即使是针对另一个应用程序,您也会收到这些事件。

#include <stdio.h>
#include <Windows.h>

LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam){
KBDLLHOOKSTRUCT *kbd = (KBDLLHOOKSTRUCT*)lParam;
switch(nCode){
case HC_ACTION:
switch(wParam){
case WM_KEYUP:
case WM_KEYDOWN:
printf("[%i %s %c]\r\n", kbd->time,
wParam == WM_KEYUP ? "Up" : "Down",
kbd->vkCode);
break;
}
break;
}
return CallNextHookEx(0, nCode, wParam, lParam);
}

int main(int argc, char** argv) {
HHOOK kbdHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, 0, 0);
MSG msg;
while (GetMessage(&msg, 0, 0, 0)) {

}
UnhookWindowsHookEx(kbdHook);
return 1;
}

关于c - 在没有控制台或窗口的应用程序中等待按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33325474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com