【发布时间】:2012-07-06 07:55:57
【问题描述】:
我想在软件中放入必要的代码,以禁用 Windows(Xp、Vista,特别是 7 和后续版本)热键,从而使用户能够摆脱软件。
详情:
- 命令必须仅在软件运行时有效;当它没有运行时,必须启用 Windows 热键(因此:如果用户启动软件,热键将被禁用;如果他关闭它,则必须重新启用)。
- 我不想禁用所有 Windows 热键(某些键热键,例如 ctrl+alt+del 必须仍然可以使用),因此诸如禁用所有热键的某种 Windows 配置之类的解决方案对我来说毫无用处。我必须能够明确选择哪些热键我想继续工作,哪些我不想。
- “热键”昵称包括 Windows 按钮。
- 代码必须使用 C++ 或 Windows 函数。
- 最好不需要终止 explorer.exe。
我确实在 stackoverflow 中看到了一篇与我的情况非常相似的帖子 (Prevent users from quitting a windows application via system hotkeys),但据我所知,所提出的解决方案都不适用于我的具体情况,我没有找到网络上的任何东西。
【问题讨论】:
-
我不清楚:应用程序只有在获得焦点时才会获得击键...你的意思是要颠覆它吗?
-
这听起来就像你需要一个钩子。
-
为了让它工作,你需要移除用户改变焦点的能力,这是可能的。在百思买的笔记本电脑上想想那些愚蠢的演示应用程序。看看这个问题的答案msdn.microsoft.com/en-us/library/ms644990(v=vs.85).aspx
-
@Randy:有一些热键可以独立于应用程序的焦点启用 - alt+tab,例如。我想禁用其中的几个。
-
@chris:是的,这是网络上最常见的解决方案之一,我目前正在研究它们。独特的问题是我找到的例子在解释时并不清晰。最糟糕的是,他们都在谈论与 1 个键相关的钩子,而不是与键组合(例如 alt+tab)。