能帮我写一个禁止键盘按一次键响应多次的可以在window上运行的C语言桌面程序吗?
以下是一个简单的C语言桌面程序,它可以禁止键盘按一次键响应多次。该程序使用Windows API函数来捕获键盘输入,并在按键按下时禁用键盘,然后在按键释放时重新启用键盘。
注意:该程序只能禁用物理键盘,无法禁用虚拟键盘(如屏幕键盘)。
#include <Windows.h>
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
if (nCode == HC_ACTION) {
switch (wParam) {
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
// 禁用键盘
BlockInput(TRUE);
break;
case WM_KEYUP:
case WM_SYSKEYUP:
// 启用键盘
BlockInput(FALSE);
break;
}
}
return CallNextHookEx(NULL, nCode, wParam, lParam);
}
int main() {
// 安装键盘钩子
HHOOK hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0);
if (!hHook) {
printf("Failed to install keyboard hook.\n");
return 1;
}
// 进入消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// 卸载键盘钩子
UnhookWindowsHookEx(hHook);
return 0;
}
原文地址: https://www.cveoy.top/t/topic/rX5 著作权归作者所有。请勿转载和采集!