3

我是 Obj-C 和 Cocoa 的新手。我正在尝试开发一个非常简单的命令行应用程序,它在启动时等待一些全局鼠标事件,并在完成后退出。我已经正确实现了一个 NSRunLoop 以避免 cli 应用程序立即完成,但我似乎无法掌握监听鼠标事件的事件。

我正在使用这个片段:

[NSEvent addGlobalMonitorForEventsMatchingMask:NSMouseMovedMask handler:^(NSEvent *mouseEvent) {
    NSLog(@"Mouse moved: %@", NSStringFromPoint([mouseEvent locationInWindow]));
}];

我是我的 CLI 应用程序,尽管它可以正确编译,但它根本不会触发任何东西,而如果粘贴在 appDelegate 类的 applicationDidFinishLaunching 方法中的空白 Cocoa 应用程序中,它就可以正常工作。

我错过了什么?谢谢!

pd:我不是 100% 确定这是我需要的 CLI。我也可以是一个不可见或无头的应用程序,没有窗口、菜单项或任何相关的东西,只是一个运行几秒钟直到满足条件的进程。

4

1 回答 1

2

我猜你需要一个正在运行的 NSApplication 才能使用 NSEvent。我相信你可以制作一个无头、无图标的 NSApp。

于 2014-02-20T01:57:14.853 回答