我已经能够设置本地热键这样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