Je suis en train de développer une sorte d'application de souris pour la plateforme iPhone. Cette application se connecte à un service informatique qui génère des événements de souris sur Mac OS X. Je génère ces événements avec CGEventCreateMouseEvent() et CGEventPost(). Mais j'ai rencontré un problème. Imaginons que vous utilisiez Safari et que vous cliquiez sur l'espace de bureau libre. Si vous le faites avec une souris normale, elle cachera la barre de menu supérieure de Safari et affichera la barre de menus du Finder. Mais sur ces événements synthétiques, cela n'agit pas comme ça. Dois-je poster un autre événement ou définir des propriétés supplémentaires?Le clic synthétique ne fait pas changer la barre de menu de l'application (Mac OS X)
Voici mon code jusqu'à la souris, la souris vers le bas:
- (void)mouseUp:(int)button {
int type = (button == LEFT_BUTTON) ? kCGEventLeftMouseUp : kCGEventRightMouseUp;
int mouseButton = (button == LEFT_BUTTON) ? kCGMouseButtonLeft : kCGMouseButtonRight;
leftMouseDown = (button == LEFT_BUTTON) ? NO : leftMouseDown;
rightMouseDown = (button == RIGHT_BUTTON) ? NO : rightMouseDown;
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
CGEventRef event = CGEventCreateMouseEvent (source, type, CGSCurrentInputPointerPosition(), mouseButton);
CGEventSetType(event, type);
CGEventPost(kCGHIDEventTap, event);
CFRelease(event);
}
- (void)mouseDown:(int)button {
int type = (button == LEFT_BUTTON) ? kCGEventLeftMouseDown : kCGEventRightMouseDown;
int mouseButton = (button == LEFT_BUTTON) ? kCGMouseButtonLeft : kCGMouseButtonRight;
leftMouseDown = (button == LEFT_BUTTON) ? YES : leftMouseDown;
rightMouseDown = (button == RIGHT_BUTTON) ? YES : rightMouseDown;
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
CGEventRef event = CGEventCreateMouseEvent (source, type, CGSCurrentInputPointerPosition(), mouseButton);
CGEventSetType(event, type);
CGEventPost(kCGHIDEventTap, event);
CFRelease(event);
}
Merci. Cela fonctionne sauf pour la première fois que vous essayez de changer l'application active. Aucune suggestion? – Rok
peut-être en commençant par un EventNumber de 1? – nob
Non, ne fonctionne toujours pas. – Rok