【发布时间】:2011-09-04 15:40:58
【问题描述】:
在我的 Qt 应用程序中,当我的应用程序最小化或在托盘中时,我想监控全局键盘和鼠标,当用户使用 CTRL+右键单击键时,我的应用程序可见状态设置为显示。
我该如何实现它。
【问题讨论】:
在我的 Qt 应用程序中,当我的应用程序最小化或在托盘中时,我想监控全局键盘和鼠标,当用户使用 CTRL+右键单击键时,我的应用程序可见状态设置为显示。
我该如何实现它。
【问题讨论】:
不编写这种应用程序有很多充分的理由(例如,当您有两个程序都对全局行为有这样的想法时,它们会相互冲突并做一些看似随机的事情)。事实上,全局捕获 Ctrl+右键单击并弹出一个应用程序听起来是一个非常糟糕的主意,因为许多程序已经为此定义了一个重要的行为。
通常更好的做法是让用户通过操作系统的机制分配热键:
http://lifehacker.com/343328/create-a-keyboard-shortcut-for-any-menu-action-in-any-program
或者建议用户使用一些已经弄清楚的第三方程序,让他们移动有冲突的全局热键以适应他们的口味:
http://lifehacker.com/software/hack-attack/turn-any-action-into-a-keyboard-shortcut-316589.php
有一些程序可以通过触摸按钮来提供服务,这些程序具有非常好的用户界面隐喻,这可能会让您相信它们比挂钩右键单击更好。在 Mac 上使用 Quicksilver 会是个不错的选择。
如果您仍然要解决它,您可能必须针对每个平台以不同的方式来解决它。在 Windows 上,您需要一个 global WH_MOUSE 挂钩:
http://msdn.microsoft.com/en-us/library/ms644960(VS.85).aspx
【讨论】:
虽然我同意 HostileFork,但这可能会对您有所帮助:http://libqxt.bitbucket.org/doc/tip/qxtglobalshortcut.html
【讨论】: