我想在没有实际点击鼠标的情况下模拟Cocoa应用程序上的鼠标点击,并且*不必知道在当前鼠标位置的情况下哪个视图应该响应点击。在NSWindow中模拟鼠标点击
我想Cocoa框架来处理搞清楚哪些观点应该作出回应,所以我不认为一个的NSView对象上的方法调用就是我要找的。也就是说,我想我需要一个方法调用,最终调用这个方法。
我现在有通过点击鼠标在特定的全局位置,使用CGEventCreateMouseEvent和CGEventPost这个工作。但是,这种技术实际上点击了鼠标。所以这是有效的,但我并不完全满意这种行为。例如,如果我在调用CGEventPost时按住键盘上的某个键,则该键将被包装到事件中。另外,如果我将另一个进程的窗口移动到我想要模拟点击的窗口上,那么CGEventPost方法将在该窗口中单击鼠标。也就是说,它在全球范围内行动,跨越流程。我想要一种可以在单个窗口上工作的技术。 NSWindow对象上可能有?
我在Cocoa文档中读到“鼠标事件由NSWindow对象分派给发生事件的NSView对象”。
好的。所以我想知道调用的方法。在窗口中调用这个方法,然后让框架指定哪个NSView调用给定当前鼠标位置。
任何帮助将不胜感激。我刚刚开始学习Cocoa框架,所以我很抱歉如果有任何术语/动词不完全正确。
[' - [NSApplication sendEvent:]'](http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSApplication_Class/Reference/Reference.html)实质上是输入事件的入口点;从那里(通常)传递到窗口。也就是说,你试图在“模拟”和“实际”点击鼠标之间的区别并不清楚。您试图避免的“CGEvent”过程有哪些功能? (例如,物理鼠标设备中没有移动按钮的伺服器,这就是我所称的“实际”点击。) –
已编辑。 Thx为您的评论。 –
@JoshCaswell这看起来很不错,但我无法实现。我会发布代码,但是它使用Objective C桥编写在Clozure中,因此解析可能会有点麻烦。我找不到任何使用sendEvent模拟鼠标点击的例子。你有机会吗? –