2012-08-01 42 views
3

可以在Windows 8之前的Windows版本上注册Win + V热键。使用此组合的示例应用程序是PureText如何在Windows 8上注册自定义Win + V热键?

随着Windows 8 Release Preview的发布,我注意到Windows 8已经控制了许多涉及Windows键的热键,但是Win + V似乎没有被使用。下面的代码将允许我注册赢+ CTRL + V热键:

#include <Windows.h> 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    if (RegisterHotKey(
     NULL, 
     1, 
     MOD_WIN | MOD_NOREPEAT | MOD_CONTROL, 
     0x56)) // 0x56 is 'v' 
    { 
     _tprintf(_T("Hotkey 'CTRL+WIN+V' registered, using MOD_NOREPEAT flag\n")); 
    } 

    MSG msg = {0}; 
    while (GetMessage(&msg, NULL, 0, 0) != 0) 
    { 
     if (msg.message == WM_HOTKEY) 
     { 
      _tprintf(_T("WM_HOTKEY received\n"));    
     } 
    } 

    return 0; 
} 

如果我修改注册只是赢+ V,那么它会注册失败:

if (RegisterHotKey(
    NULL, 
    1, 
    MOD_WIN | MOD_NOREPEAT, 
    0x56)) // 0x56 is 'v' 
{ 
    _tprintf(_T("Hotkey 'WIN+V' registered, using MOD_NOREPEAT flag\n")); 
} 

是有办法强制注册Windows + V热键?我假设可能有一种方法可以通过Win32 API挂钩来实现,但是我已经看了很长时间了。对于实现这一点更容易支持的选项将不胜感激。

+1

'Windows徽标+ V:启动Clipboard' – 2012-08-01 21:27:23

+2

我想你知道,赢+按键属于系统 – 2012-08-01 22:46:40

回答

2

以下是pdfxps中的Windows 8键盘快捷键的完整列表。 Win + V已经在使用;它通过通知循环。坚持使用Win + CTRL + V可能是您的最佳选择。

4

RegisterHotKey函数一直保留系统的Windows密钥。 The documentation甚至表示这样的:

MOD_WIN0x0008
是Windows键被按下。这些键被标记有Windows徽标。涉及WINDOWS键的键盘快捷键被保留供操作系统使用。

在注册自己的非系统热键时,您应该选择不同的[set of]修饰键[s]。

此外,正如其他人所提到的,Windows key + V键盘快捷键已被使用。当您尝试注册已注册的热键时,RegisterHotKey会失败。

很多Win32函数都设置了一个错误代码,指示错误代码在不工作时确切地出错了。如果文档显示的数量太多,您可以拨打GetLastError function来确定错误代码是什么。这将为您提供更多的信息来帮助调试问题。