win32 注册热键示例代码
时间: 2023-07-16 13:16:21 浏览: 68
以下是一个简单的示例代码,用于在 Windows 使用 Win32 API 注册全局热键:
```cpp
#include <Windows.h>
#define HOTKEY_ID 1
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) {
case WM_HOTKEY:
if (wParam == HOTKEY_ID) {
// 执行热键操作
MessageBox(NULL, "Hotkey pressed!", "Hotkey", MB_OK);
}
break;
case WM_DESTROY:
// 注销热键并关闭窗口
UnregisterHotKey(hwnd, HOTKEY_ID);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
// 创建窗口
WNDCLASS wc = {0};
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.lpszClassName = "MyApp";
RegisterClass(&wc);
HWND hWnd = CreateWindow("MyApp", "My App", 0, 0, 0, 0, 0, NULL, NULL, hInstance, NULL);
if (!hWnd) {
return -1;
}
// 注册热键
BOOL success = RegisterHotKey(hWnd, HOTKEY_ID, MOD_CONTROL | MOD_SHIFT, 'H');
if (!success) {
MessageBox(NULL, "Failed to register hotkey!", "Error", MB_OK | MB_ICONERROR);
return -1;
}
// 消息循环
MSG msg = {0};
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
```
在此示例中,我们在 `WinMain` 函数中注册了一个全局热键,使用组合键 `Ctrl + Shift + H` 并且热键 ID 为 `HOTKEY_ID = 1`。当用户按下该热键时,将会弹出一个消息框。当窗口被关闭时,我们注销了热键并且退出程序。
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)