Помощник / Служебные методы очень хорошо. Не волнуйтесь о добавлении их к библиотеке в Вашем приложении или Платформе. Большинство платформ, которые я видел, использует их во многих вариантах.
Однако если Вы хотите стать действительно лукавыми о них, необходимо изучить дополнительные методы в C# 3.0. Используя дополнительный метод сделает Ваши Утилиты немного больше "целостной" части Вашей платформы, которая походит на то, что Вы пытаетесь сделать путем рассмотрения для создания их абстрактными. Не говоря уже о дополнительном методе большая забава записать!
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:
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);
}