ich den folgenden Code bin mit einem Mausklick zu simulieren:Durchführen einen Doppelklick mit CGEventCreateMouseEvent()
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 LeftClick(const CGPoint point)
{
PostMouseEvent(kCGMouseButtonLeft, kCGEventMouseMoved, point);
NSLog(@"Click!");
PostMouseEvent(kCGMouseButtonLeft, kCGEventLeftMouseDown, point);
PostMouseEvent(kCGMouseButtonLeft, kCGEventLeftMouseUp, point);
}
ich im Grunde den gleichen Code verwenden kann, eine Steuertaste (rechte Maustaste) zu tun durch Änderung:
kCGEventLeftMouseDown
kCGEventLeftMouseUp
kCGMouseButtonLeft
zu ihren jeweiligen "Richtigen" Ereignissen. Die Funktion sieht ungefähr so aus:
void RightClick(const CGPoint point)
{
PostMouseEvent(kCGMouseButtonRight, kCGEventMouseMoved, point);
NSLog(@"Click Right");
PostMouseEvent(kCGMouseButtonRight, kCGEventRightMouseDown, point);
PostMouseEvent(kCGMouseButtonRight, kCGEventRightMouseUp, point);
}
Aber, wie etwa ein Doppelklick auf? Ich habe versucht 2 leftclicks Senden und ruft PostMouseEvent() zweimal hintereinander, aber ohne Glück. Wie führen Sie einen Doppelklick aus?
danke!
wie: CGEventSetIntegerValueField (kCGMouseButtonLeft, kCGEventLeftMouseDown, 2) muss ich es danach auf 1 zurücksetzen? – Uri
Sie müssen einen Verweis auf das eigentliche Ereignisobjekt übergeben, in Ihrem Fall an "theEvent" als ersten Parameter. An diesem Punkt, dass Click gräflichen Ereignis wird auf 2 gesetzt, und Sie wollen es für alle 4 CGEventPosts bis 2 verlassen, die Sie tun müssen, (unten, oben, unten, oben). – phoebus
wie folgt aus: CGEventSetIntegerValueField (kCGEventLeftMouseDown, kCGMouseEventClickState, 2); ich mehrere Warnung bekommen ... können Sie einen Ausschnitt posten? Vielen Dank! – Uri