我正在编写一个简单的 Mac 应用程序,旨在在用户单击鼠标按钮时在后台运行并执行某些操作。该应用程序是使用 PyObjC 用 Python 编写的。我addGlobalMonitorForEventsMatchingMask
用来监视NSLeftMouseDown
事件:
NSEvent.addGlobalMonitorForEventsMatchingMask_handler_(NSLeftMouseDownMask, handler)
此代码在终端中运行时完美运行。但是,当我将它捆绑为独立应用程序(使用 py2app)然后启动它时,该应用程序一开始不会收到任何事件。(或者至少,如果确实如此,它不会运行我的处理程序方法中的代码。)只有当我在 Dock 中单击应用程序时,它才会开始接收事件,之后,即使在它之后它也会继续接收事件返回后台。但在激活一次之前它不会收到任何东西。
我的问题是:如何让我的应用程序在启动后立即开始接收事件,而不必先通过单击 Dock 图标激活?这是一些已知的怪癖NSEvents
,还是我在 PyObjC 中的运行循环可能有问题?
非常感谢任何帮助或指导!
编辑:经过进一步测试,事实上,无论我是否激活它,我的应用程序似乎都会在启动后大约十秒内自发地开始接收通知。这有点烦人,但很好。
但是,如果我使用其中一个LSUIElement = true
或其中一个运行应用程序(LSBackgroundOnly = true
我Info.plist
最终想要这样做,因为这个应用程序应该只在后台运行并且永远不会出现在 Dock 中),我永远不会收到通知。所以我仍然卡住了。