当拖动操作*在任何地方*开始时,如何在OS X中收到通知?

时间:2011-02-06 08:02:25

标签: objective-c cocoa macos user-interface drag-and-drop

我想知道当屏幕上的拖放操作开始任何地方时,是否有任何方法可以通知我的应用程序,即使我没有活动窗口。

我已经研究过普通的拖放API,但我没有发现任何可以做到这一点的事情。 NSDraggingDestination协议以及-[NSWindow/NSView registerForDraggedTypes:]方法允许您注意某人拖动某些内容并将其交叉到您的窗口中,但我想在任何位置启动任何拖动操作时注意到它屏幕。

有关如何解决此问题的任何提示?是否有标准的Cocoa API,或者是否有私有API /某种脏黑客来获取此信息?

提前致谢:)

2 个答案:

答案 0 :(得分:3)

看看NSEvent’s +addGlobalMonitorForEventsMatchingMask:handler:。我不确定你是否可以跟踪鼠标拖动,但它当然可以跟踪鼠标按钮上/下事件。

答案 1 :(得分:0)

我没有这样做,
但我假设您需要某种外部软件监控系统上的所有鼠标活动,并将其报告给您的应用程序(或您的应用程序自行执行此操作), 因为只有在应用程序窗口中有活动时,才会在您的应用中报告拖动事件..