Simulating mouse clicks on Mac OS X does not work for some applications

空扰寡人 提交于 2019-11-27 12:56:56

What you need to do to convince these applications that you have in fact generated a click is to explicitly set the value of the "click state" field on the mouse up event to 1 (it defaults to 0). The following code will do it:

CGEventSetIntegerValueField(event, kCGMouseEventClickState, 1);

It also has to be set to 1 for the mouse down, but by using CGEventCreateMouseEvent() rather than CGEventCreate() that gets done for you.

I have tested this and it works in the 'i' buttons in the dashboard and the Spotlight search results.

(As an aside, if you were simulating a double click you would need to set the click state to 2 for both the mouse down and mouse up events of the second click.)

elou

Most menus are activated with the mouseDown event. Hyperlinks are followed after the mouseUp event. The "i" button only works when the mouse has been clicked but not a long time. All this seem to show that you have a timing problem, try several pressed timing.

Taybin

Use OSXVnc. I see they use CGPostMouseEvent() instead of CGPostEvent().

Quack

I have written how to do it in the blog post Python Mouse Click and Move Mouse on Apple Mac OS X Snow Leopard 10.6.x.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!