单击鼠标向下拖动Mac上的对象

Uri*_*Uri 7 macos cocoa objective-c

我一直在使用以下代码在Mac上以编程方式发出点击

void PostMouseEvent(CGMouseButton button, CGEventType type, const CGPoint point) 
{
    CGEventRef theEvent = CGEventCreateMouseEvent(NULL, type, point, button);
    CGEventSetType(theEvent, type);
    CGEventPost(kCGHIDEventTap, theEvent);
    CFRelease(theEvent);
}

void Click(const CGPoint point) 
{
    PostMouseEvent(kCGMouseButtonLeft, kCGEventMouseMoved, point);
    NSLog(@"Click!");
    PostMouseEvent(kCGMouseButtonLeft, kCGEventLeftMouseDown, point);
    PostMouseEvent(kCGMouseButtonLeft, kCGEventLeftMouseUp, point);
}
Run Code Online (Sandbox Code Playgroud)

现在,我试图点击下来以便能够拖动对象,如滚动条或应用程序的窗口.我正在使用以下内容:

PostMouseEvent(kCGMouseButtonLeft, kCGEventMouseMoved, point);
NSLog(@"Click Down!");
PostMouseEvent(kCGMouseButtonLeft, kCGEventLeftMouseDown, point);
Run Code Online (Sandbox Code Playgroud)

当我跑上面一些有趣的事情会发生,当鼠标左键向下是没有问题似乎发生的代码,我将我的鼠标,当我加入了鼠标的窗口不动然而,向上事件则窗口跳下的位置据说我拖了它.这有点好,但是,如何让鼠标单击并拖动对象呢?

注意:我确实有一个完整的方法来查看鼠标何时停止移动,这样我就可以点击了.

请发布代码.谢谢

val*_*exa 4

做你想做的事情的唯一方法是设置一个活动的 CGEventTap 来获取可编辑的 kCGEventMouseMoved 事件流,并在 CGEventTap 的回调中将它们更改为 kCGEventLeftMouseDragged 事件(显然你需要首先合成鼠标按下事件)

您可能认为这是通过发送单击事件而不释放并移动鼠标来自动完成的,但事实并非如此。