我有一个非常著名的WinAPI函数:
BOOL WINAPI RegisterHotKey(
__in_opt HWND hWnd,
__in int id,
__in UINT fsModifiers,
__in UINT vk
);我发现我应该只能使用MOD_ALT、MOD_CONTROL、MOD_SHIFT、MOD_WIN键以及MOD_NOREPEAT。
因此,我可以使用以下方法创建一个系统范围的热键,例如,用于Shift+A组合的A键:
RegisterHotKey(NULL,1,MOD_SHIFT,0x41);现在的重要问题是:
我如何使用NUM锁/滚动锁/大写锁(就像MOD_SHIFT和其他锁一样)的状态作为系统范围内的热键的修饰符,以便当任何这样的“锁”键被打开时,键组合的注册密钥表现为热键,并且在关闭“锁”键时表现为正常的、无捕获的密钥?
我认为,使用类似GetKeyState(VK_NUMLOCK)&0xFFFF的计时器和监视来注册/取消注册热键,对于解决方案来说过于草率,可能会减慢或干扰系统性能,而且听起来是一种不完整的方法,因为它与系统范围内的键行为有关。
还有什么更好的方法吗?
发布于 2011-05-16 05:29:51
根据具体情况,我可能只需在事件代码开始时检查“锁”键的状态。
否则,如果您真的愿意,可以使用SetWindowsHookEx创建一个键盘挂钩来进行监视。
https://stackoverflow.com/questions/6009669
复制相似问题