我已經能夠設置本地熱鍵這樣WIN32 API的全局熱鍵?
RegisterHotKey(hwndDlg, 100, MOD_ALT | MOD_CONTROL, 'S');
如何設置熱鍵是全球性的?即使當我的窗戶隱藏時,我也希望它在那裏。
我已經能夠設置本地熱鍵這樣WIN32 API的全局熱鍵?
RegisterHotKey(hwndDlg, 100, MOD_ALT | MOD_CONTROL, 'S');
如何設置熱鍵是全球性的?即使當我的窗戶隱藏時,我也希望它在那裏。
不管你的窗口是否可見,都無關緊要。你不應該使用你打算破壞的hWnd(就像一個對話框)。如果您沒有其他合適的窗口,請創建一個單獨的(不可見的)窗口。
我不摧毀它 我只是這樣隱藏它 ShowWindow(hwndDlg,SW_HIDE); – Mars 2009-11-30 16:29:09
http://msdn.microsoft.com/ru-RU/library/windows/desktop/ms646309(v=vs.85).aspx
的hWnd [中,可選]
類型:HWND
< ...>如果該參數爲NULL,WM_HOTKEY消息被髮布到調用線程的 消息隊列,並且必須在 消息循環進行處理。
這是註冊全局熱鍵的更好方法。
首先定義一個或多個常數爲你的熱鍵
#define HOTKEY1 1000
#define HOTKEY2 1002
然後你註冊這些熱鍵
RegisterHotKey(NULL, HOTKEY1, MOD_ALT + MOD_SHIFT, 0x53); // ALT+SHIFT+s
RegisterHotKey(NULL, HOTKEY2, MOD_ALT + MOD_SHIFT, 0x51); // ALT+SHIFT+q
中的重頭戲
最後看你監視這些熱鍵,並作出迴應:
if (msg.message == HOTKEY1)
{
switch (LOWORD(msg.wParam))
{
case HOTKEY1:
// do such and such
break;
case HOTKEY2:
// do such and such
break
}
}
我一直在寫Windows應用程序近20年,我不知道這個API調用存在 - 所以噸hank和+1。 :) – Rob 2009-11-30 21:46:57