Używam poniższy kod, żeby zasymulować kliknięcie myszy:Wykonywanie podwójnego kliknięcia korzystając 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);
}
mogę użyć w zasadzie ten sam kod, aby zrobić Control (prawy przycisk myszy) poprzez zmianę:
kCGEventLeftMouseDown
kCGEventLeftMouseUp
kCGMouseButtonLeft
do odpowiednich zdarzeń "właściwych". Funkcja wygląda następująco:
void RightClick(const CGPoint point)
{
PostMouseEvent(kCGMouseButtonRight, kCGEventMouseMoved, point);
NSLog(@"Click Right");
PostMouseEvent(kCGMouseButtonRight, kCGEventRightMouseDown, point);
PostMouseEvent(kCGMouseButtonRight, kCGEventRightMouseUp, point);
}
Ale co powiesz na podwójne kliknięcie? Próbowałem wysłać dwa lewe kliknięcia i wywołać PostMouseEvent() dwa razy z rzędu, ale bez powodzenia. Jak wykonać podwójne kliknięcie?
dziękuję!
podobne: CGEventSetIntegerValueField (kCGMouseButtonLeft, kCGEventLeftMouseDown, 2) Czy muszę zresetować go do 1 po tym? – Uri
Musisz przekazać odniesienie do rzeczywistego obiektu zdarzenia, w twoim przypadku do "theEvent", jako pierwszy parametr. W tym momencie licznik kliknięć tego wydarzenia jest ustawiony na 2, a użytkownik chce pozostawić go na poziomie 2 dla wszystkich 4 CGEventPosts, które należy wykonać (w dół, w górę, w dół, w górę). – phoebus
podobnie jak to: CGEventSetIntegerValueField (kCGEventLeftMouseDown, kCGMouseEventClickState, 2); Otrzymuję kilka ostrzeżeń ... Czy możesz zamieścić krótki opis? dzięki! – Uri