我对Obj-C和Cocoa很陌生。我正在尝试开发一个非常简单的命令行应用程序,该应用程序在启动时等待一些全局鼠标事件,并在完成后退出。我已经正确实现了 NSRunLoop 以避免 cli 应用程序立即完成,但我似乎无法掌握侦听鼠标事件的事件。
我正在使用这个片段:
[NSEvent addGlobalMonitorForEventsMatchingMask:NSMouseMovedMask handler:^(NSEvent *mouseEvent) {
NSLog(@"Mouse moved: %@", NSStringFromPoint([mouseEvent locationInWindow]));
}];
我是我的 CLI 应用程序,它根本不会触发任何东西,尽管它编译正确,而如果粘贴到空白的 Cocoa 应用程序中,在 appDelegate 类中的应用程序 DidFinishLaunch 方法中,它可以正常工作。
我错过了什么?谢谢!
pd:我不是 100% 确定这是我需要的 CLI。我也可能是一个不可见或无头的应用程序,没有窗口、菜单项或任何相关的东西,只是一个运行几秒钟直到满足条件的过程。
我猜你需要一个正在运行的NSApplication来使用NSEvent。我相信,你可以做一个无头、无图标的NSApp。