Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 当应用程序在后台运行时,如何获得Mac中鼠标和键盘使用的通知?_Macos_Cocoa_Desktop Application - Fatal编程技术网

Macos 当应用程序在后台运行时,如何获得Mac中鼠标和键盘使用的通知?

Macos 当应用程序在后台运行时,如何获得Mac中鼠标和键盘使用的通知?,macos,cocoa,desktop-application,Macos,Cocoa,Desktop Application,我是Mac应用程序开发新手。我有一个任务要做,我必须确定用户是否正在使用鼠标/键盘,这应该在应用程序以最小化状态运行时完成。我用谷歌搜索了一下,但没有找到正确的方法。 请给我一个实现的方法。 提前谢谢 我想在这方面补充更准确的信息。基本上,我的要求是,当我的应用程序处于最小化状态时,我希望跟踪用户是否在系统中的任何位置或任何其他应用程序中使用键盘/鼠标。如何实现这一点?n事件的-addGlobalMonitorForEventsMatchingMask:handler:将允许您这样做。在您的应用

我是Mac应用程序开发新手。我有一个任务要做,我必须确定用户是否正在使用鼠标/键盘,这应该在应用程序以最小化状态运行时完成。我用谷歌搜索了一下,但没有找到正确的方法。 请给我一个实现的方法。 提前谢谢


我想在这方面补充更准确的信息。基本上,我的要求是,当我的应用程序处于最小化状态时,我希望跟踪用户是否在系统中的任何位置或任何其他应用程序中使用键盘/鼠标。如何实现这一点?

n事件的
-addGlobalMonitorForEventsMatchingMask:handler:
将允许您这样做。

在您的应用程序中使用以下IDFinishingLaunching:方法

[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *event) {

    NSLog(@"key down");
    // Your code on key down event here

}];


[NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDownMask handler:^(NSEvent *event) {

    NSLog(@"mouse down");
    // Your code on left mouse down event here

}];    

谢谢你的好意回复:)!!M在-addGlobalMonitorForEventsMatchingMask:handler:method的处理程序块中未收到任何事件通知。我在didfinishlaunchingwithoptions中添加了此方法。但当我的应用程序在系统托盘中或处于最小化状态时,我不会收到任何事件通知。你的帖子被标记为“osx”和“桌面应用程序”<代码>-应用程序:DidFinishLaunchwithOptions:是一种UIApplicationLegate协议方法,仅在iOS上使用。那是哪一个呢?如果您在桌面上,则永远不会调用此方法,一个简单的
NSLog
可能会向您显示此方法。您应该使用
-applicationdFinishLaunching:
来代替。OPPS我的错误:)!!实际上是ApplicationIDFinishLaunching:m在使用,我错误地发布了ios UIApplication委托方法。格雷德,你能告诉我,当应用程序处于最小化模式时,如何将其发送回,以从应用程序外部接收键盘EVNET。我不确定我是否理解这个问题。你想把它藏起来吗?NSApplication有一个
-hide:
方法。即使应用程序处于隐藏状态,全局事件筛选器仍应接收事件。实际上,我使用了该方法(在Neha的回复中提到)来接收全局事件,即使应用程序处于最小化状态。我正在获取鼠标事件通知,但没有从应用程序外部获取按键按下事件通知。你知道这件事有什么问题吗?或者你可以建议其他的解决方法。谢谢你的回复!!从提供的代码u中,我从应用程序的内部和外部获取鼠标事件。但我没有收到任何输入/输出应用程序的按键信息。当您的应用程序不是最前面的应用程序时(在包括桌面在内的任何其他应用程序上,当菜单栏未显示应用程序的菜单时,会发出鼠标下键和鼠标下键的通知)如果您还想处理应用程序上的通知,那么您也必须处理其mouseDown:和keyDown事件。但是,neha正在获取鼠标事件,但没有获取keyDown事件通知。我正在执行与您提到的相同的操作。你能告诉我原因是什么吗?你之所以会得到鼠标事件,是因为一旦你点击了应用程序之外的任何地方,其他应用程序就会成为焦点。