1

使用带有 TUIO 的 JUCE,我正在开发一个多点触控实用程序来向其他应用程序发送“热键”命令(我正在使用一个发送 TUIO 消息的 USB 触摸框架)。例如,我提供了一个界面,用户可以通过该界面按住以编程组合键,然后点击该按钮将编程的组合键发送到另一个应用程序。我在 OSX 上完成此操作的方法是将我的实用程序作为“仅后台”应用程序 ( NSApplicationActivationPolicyProhibited) 运行。我使用[NSWindow setCanHide: NO]所以我的实用程序的 GUI 是可见的,即使它作为后台应用程序运行。

它运行良好,除非另一个应用程序的窗口位于我的顶部。发生的情况是触摸通过其他应用程序传递到我的应用程序中 - 导致我的应用程序中无意按下按钮。通常,我可以让我的应用程序只在活动应用程序时监听 TUIO 触摸回调,[NSApp isActive]. 但是,由于我的应用程序只是后台,它永远不会处于活动状态,我无法判断是否有另一个窗口正在覆盖它以防止触摸。

那么,有没有办法让“仅后台”应用程序能够判断它是否位于所有其他窗口之上?或者,有没有办法从我的应用程序中获取来自其他应用程序的所有 Cocoa 窗口的列表,并能够判断它们是否出现在我的“仅背景”应用程序之上?

另外,有谁知道我将如何在 Windows 中进行上述所有操作?换句话说,Windows 相当于什么,NSApplicationActivationPolicyProhibited我能否判断它是否被其他应用程序的窗口覆盖?

4

0 回答 0