可可 – CGEventPost鼠标点击后屏幕没有刷新

可可 – CGEventPost鼠标点击后屏幕没有刷新,第1张

概述当用户单击某个键盘键(CapsLock)时,我以编程方式生成鼠标单击. 因此,当CapsLock打开时我向左鼠标按下,然后在CapsLock关闭时向左鼠标向上. 这样做是正确的,例如,如果我将鼠标放在窗口标题栏上,单击CapsLock,然后移动鼠标,然后单击CapsLock,窗口正确移动.即我正确地“拖动”窗口,就像我在移动鼠标时按住鼠标左键一样. 然而,有一个问题 – 当我移动鼠标时窗口不移动, 当用户单击某个键盘键(CapsLock)时,我以编程方式生成鼠标单击.
因此,当CapsLock打开时我向左鼠标按下,然后在CapsLock关闭时向左鼠标向上.

这样做是正确的,例如,如果我将鼠标放在窗口标题栏上,单击CapsLock,然后移动鼠标,然后单击CapsLock,窗口正确移动.即我正确地“拖动”窗口,就像我在移动鼠标时按住鼠标左键一样.

然而,有一个问题 – 当我移动鼠标时窗口不移动,它只在我第二次点击CapsLock后移动到最终位置.即在我’释放’鼠标按钮之后.

我需要做些什么来确保在鼠标移动过程中刷新屏幕?

有趣的是,我也迷上了

[NSEvent addGlobalMonitorForEventsMatchingMask:NSleftMouseDraggedMask

并且发现我的NSLog语句仅在我释放鼠标左键(真正的鼠标左键)后输出

鼠标点击代码如下,我可以发布所有代码,如果有必要,没有太多的..

// simulate mouse down// get current mouse posCGEventRef ourEvent = CGEventCreate(NulL);CGPoint point = CGEventGetLocation(ourEvent);NSLog(@"Location? x= %f,y = %f",(float)point.x,(float)point.y);CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);CGEventRef theEvent = CGEventCreateMouseEvent(source,kCGEventleftMouseDown,point,kCGMousebuttonleft);CGEventSetType(theEvent,kCGEventleftMouseDown);CGEventPost(kCGHIDEventTap,theEvent);CFRelease(theEvent);// simulate mouse up// get current mouse posCGEventRef ourEvent = CGEventCreate(NulL);CGPoint point = CGEventGetLocation(ourEvent);NSLog(@"Location? x= %f,kCGEventleftMouseUp,kCGEventleftMouseUp);CGEventPost(kCGHIDEventTap,theEvent);CFRelease(theEvent);
解决方法 如果您希望能够拖动窗口,问题是您还需要发布一个leftMouseDragged事件.

只需调用beginEventMonitoring即可开始监听大写锁定键事件和鼠标移动事件.事件处理程序将按照您的需要模拟鼠标左键和移动.这是我的博客的链接,您可以在其中下载Xcode 4:http://www.jakepetroules.com/2011/06/25/simulating-mouse-events-in-cocoa的完整工作示例

这个例子是在公共领域,做任何你喜欢的事情. 总结

以上是内存溢出为你收集整理的可可 – CGEventPost鼠标点击后屏幕没有刷新全部内容,希望文章能够帮你解决可可 – CGEventPost鼠标点击后屏幕没有刷新所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1002134.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存