取消注册Windows 7中的Alt-Tab热键

时间:2010-07-20 12:22:25

标签: c# windows-7 hotkeys

我认为这个问题应该很容易解决,而且我把它带到这里因为我真的觉得我到处寻找解决方案。

我的代码是用C#编写的,应该简单地写一下Alt-Tab热键。这行在XP中有效但在7中返回false:

RegisterHotKey(handle, ID__ALT_TAB, MOD_ALT, VK_TAB)); 

我知道Windows 7现在要求我在注册新热键之前取消注册热键,这就是问题所在。 当我检查最后一个错误代码时,我得到代码1409,这意味着热键已经存在。但是,如果我在上一行之前调用此行:

UnregisterHotKey(handle, ID__ALT_TAB)); 

该行失败,最后一个错误代码设置为1419,表示不存在此类热键。这些行在XP中工作,我可以注册一个热键,然后取消注册。我相信这是因为我试图取消注册具有错误ID的热键,因为ID_ALT_TAB是自定义的。我找不到Windows级Alt-Tab HotKey的正确ID。任何帮助或一般指示将不胜感激。

4 个答案:

答案 0 :(得分:1)

我认为没有办法做到这一点。更不用说,即使你设法以某种方式将热键注册到现有热键之上,当你的应用程序退出时会发生什么?突然间,根本没有Alt-Tab。

相反,我会选择其他快捷方式来触发您的替换。也许Ctrl-Alt-Tab?

答案 1 :(得分:1)

不确定您是否已经看过this?这里可能需要与C做一点工作。我认为您可以使用此代码拦截Alt + Tab笔划,然后在其中执行任何操作,但我不确定。

编辑:另请参阅this了解您可能需要转换为C#的旧VB工作。

答案 2 :(得分:0)

您是否也以管理员身份运行程序(而不仅仅是以管理员身份登录)? XP程序之后不一定因为用户是管理员而获得管理员权限,您可以尝试右键单击以管理员身份运行(或类似)。

答案 3 :(得分:0)

UnregisterHotKey工作正常,并且在完成注册的同一个步骤中触发时返回0,因此请确保从同一个线程取消注册热键,否则返回1419.在Vista上测试。