Tôi đang sử dụng đoạn mã sau để mô phỏng một cú nhấp chuột:Performing một nhấp chuột kép sử dụng 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);
}
tôi có thể sử dụng cơ bản cùng mã để làm một điều khiển nhấp chuột (click chuột phải) bằng cách thay đổi:
kCGEventLeftMouseDown
kCGEventLeftMouseUp
kCGMouseButtonLeft
012.cho các sự kiện "Đúng" tương ứng. Hàm trông giống như sau:
void RightClick(const CGPoint point)
{
PostMouseEvent(kCGMouseButtonRight, kCGEventMouseMoved, point);
NSLog(@"Click Right");
PostMouseEvent(kCGMouseButtonRight, kCGEventRightMouseDown, point);
PostMouseEvent(kCGMouseButtonRight, kCGEventRightMouseUp, point);
}
Nhưng, cách nhấp đúp? Tôi đã thử gửi 2 nhấp chuột trái và gọi PostMouseEvent() hai lần liên tiếp nhưng không may mắn. Làm cách nào để bạn thực hiện nhấp đúp?
cảm ơn!
như: CGEventSetIntegerValueField (kCGMouseButtonLeft, kCGEventLeftMouseDown, 2) tôi có cần đặt lại thành 1 sau đó không? – Uri
Bạn cần chuyển tham chiếu đến đối tượng sự kiện thực tế, trong trường hợp của bạn là "theEvent", làm tham số đầu tiên. Tại thời điểm đó, số lần nhấp của sự kiện đó được đặt thành 2 và bạn muốn để nó là 2 cho tất cả 4 CGEventPost mà bạn cần thực hiện (xuống, lên, xuống, lên). – phoebus
như thế này: CGEventSetIntegerValueField (kCGEventLeftMouseDown, kCGMouseEventClickState, 2); Tôi nhận được một số cảnh báo ... bạn có thể đăng một đoạn mã không? cảm ơn! – Uri