Выполнение использования двойного щелчка CGEventCreateMouseEvent ()

Помощник / Служебные методы очень хорошо. Не волнуйтесь о добавлении их к библиотеке в Вашем приложении или Платформе. Большинство платформ, которые я видел, использует их во многих вариантах.

Однако если Вы хотите стать действительно лукавыми о них, необходимо изучить дополнительные методы в C# 3.0. Используя дополнительный метод сделает Ваши Утилиты немного больше "целостной" части Вашей платформы, которая походит на то, что Вы пытаетесь сделать путем рассмотрения для создания их абстрактными. Не говоря уже о дополнительном методе большая забава записать!

16
задан STW 7 August 2013 в 17:12
поделиться

1 ответ

Look into CGEventSetIntegerValueField(event, kCGMouseEventClickState, clickCount). Also, even after setting the clickCount to 2, you may have to perform 2 events in some cases, for legacy apps.

So basically:

  1. Create event
  2. Set click count to 2
  3. Set event type to mousedown and send
  4. Set event type to mouseup and send
  5. Repeat 3 and 4

Edit:

void doubleClick(int clickCount) {
    CGEventRef theEvent = CGEventCreateMouseEvent(NULL, kCGEventLeftMouseDown, point, kCGMouseButtonLeft);  
    CGEventSetIntegerValueField(theEvent, kCGMouseEventClickState, clickCount);  
    CGEventPost(kCGHIDEventTap, theEvent);  
    CGEventSetType(theEvent, kCGEventLeftMouseUp);  
    CGEventPost(kCGHIDEventTap, theEvent);  
    CGEventSetType(theEvent, kCGEventLeftMouseDown);  
    CGEventPost(kCGHIDEventTap, theEvent);  
    CGEventSetType(theEvent, kCGEventLeftMouseUp); 
    CGEventPost(kCGHIDEventTap, theEvent); 
    CFRelease(theEvent); 
}
17
ответ дан 30 November 2019 в 22:24
поделиться