【发布时间】:2016-02-27 23:12:46
【问题描述】:
我正在尝试通过编程来模拟鼠标动作。
我无法可靠地执行点击和拖动操作。
对于单击和拖动,我按照下面提到的顺序执行以下操作
- 在当前鼠标指针位置发布鼠标左键按下事件(仅一次)
- 移动鼠标(因为鼠标按下事件已经发送,它必须充当鼠标按下并拖动,从初始鼠标位置选择文本)
- 发布鼠标左键释放事件以结束鼠标按住操作。
在 Xcode 或 Safari 等苹果应用程序中,此方法不能可靠地工作(它会在拖动时突出显示文本,但使用实际鼠标我可以通过单击和拖动来突出显示文本)。也不能拖动图标。
但是在 Firefox 中,这种技术是有效的。选择跟随鼠标!那就是当我们移动鼠标指针时,选择也会相应地改变,这就是我所需要的。
以下是我用来发送鼠标点击事件的代码。
-(void)_sendMouseEvent:(int)mouseEvent withMouseButton:(CGMouseButton)mouseBtn
{
CGEventRef ourEvent = CGEventCreate(NULL);
NSPoint mouseLoc = CGEventGetLocation(ourEvent); //get current mouse position
CGEventRef mouseClick = CGEventCreateMouseEvent(
NULL,
mouseEvent,
mouseLoc,
mouseBtn
);
CGEventPost(kCGHIDEventTap, mouseClick);
CFRelease(ourEvent);
CFRelease(mouseClick);
}
我确实尝试过定期发送鼠标按下事件,但没有任何改变。
你对我做错了什么有任何想法吗?请提出您想到的任何解决方法。
【问题讨论】:
-
CGPoint mouseLoc = [NSEvent mouseLocation];更整洁
标签: objective-c xcode macos mouse hid