windows下按键映射
include iostream include windows.h using namespace std; HHOOK hHook = 0; LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode == HC_ACTION) { KBDLLHOOKSTRUCT* p = (KBDLLHOOKSTRUCT*) lParam; if (p->vkCode == VK_LMENU) // VK_LMENU = ALT key { switch (wParam){ case WM_SYSKEYDOWN :{ // use SYSKEYDOWN cout << "Key down" << endl; keybd_event(VK_LCONTROL, 0x1D, KEYEVENTF_EXTENDEDKEY | 0, 0 ); break; } case WM_KEYUP: // use regular keyup { cout << "Key up" << endl; keybd_event( VK_LCONTROL, 0x1D, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); return 1; break; } default: wParam = WM_SYSKEYDOWN; // if you do not specify it changes back to alt break; } return 1; } } return CallNextHookEx(hHook, nCode, wParam, lParam); } int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow) { hHook = SetWindowsHookEx(WH_KEYBOARD_LL, &LowLevelKeyboardProc, hThisInstance, NULL); if (hHook == NULL) { cout << "Error" << endl; return 1; } MSG messages; while (GetMessage (&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } return messages.wParam; }
转载于:https://qa.1r1g.com/sf/ask/1219369371/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2022-04-27 1
2022-04-27 shell脚本执行错误:/bin/bash^M: 坏的解释器: 没有那个文件或目录(chmod ;无法访问,没有那个文件或目录)
2022-04-27 cJSON获取bool值
2022-04-27 Qt5.12.0 for Android 调用QNetworkAccessManager报错:qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization faile
2022-04-27 android编译Qt5.12.0支持的OpenSSL_1_0_2p
2022-04-27 Qt5.12.0对应的OpenSSL版本
2022-04-27 虚拟机复制文件到本机报错: 您已尝试将一个或多个符号链接复制到不支持符号链接的主机操作系统。