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

前端 未结 4 1243
走了就别回头了
走了就别回头了 2020-12-03 02:13

I\'m writing an application for Mac OS X 10.6 and later in C++. One part of the application needs to simulate mouse movement and mouse clicks. I do this currently by posting

4条回答
  •  没有蜡笔的小新
    2020-12-03 02:48

    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.)

提交回复
热议问题