2010-04-18 4 views
1

Bonjour Je crée une application os x pour laquelle j'essaie d'ajouter une interface distante. Pour cela, je dois pouvoir envoyer les commandes de la souris et de la souris vers la fenêtre de mon application.Comment obtenir l'eventNumber actuel pour créer un événement avec NSEvent

J'ai trouvé le code avec lequel je peux le faire avec succès, il se présente comme suit:

int mask = 0x100; 
NSEvent* eventMouseDown = [NSEvent mouseEventWithType:NSLeftMouseDown 
    location:p 
    modifierFlags:mask 
    timestamp:[NSDate timeIntervalSinceSystemStartup] 
    windowNumber:[w windowNumber] 
    context:[NSGraphicsContext graphicsContextWithWindow:w] 
    eventNumber:++eventCounter +42599 clickCount:1 pressure:0]; 
NSLog(@"Mouse down event: %@", eventMouseDown); 
[[NSApplication sharedApplication] sendEvent:eventMouseDown]; 

J'ai qu'un seul problème avec cette pensée de code et le paramètre est le eventNumer. Autant que je l'ai découvert c'est un nombre qui augmente avec chaque événement. Mais je ne peux pas trouver un moyen de trouver le nombre actuel d'où j'ai besoin d'augmenter. Le nombre que j'utilise là actuellement est juste essai et erreur et ne fonctionne pas toujours pour fonctionner toujours.

+0

En quoi consiste le '42599'? –

+0

Ceci est juste un nombre aléatoire que j'ai ajouté lors des tests. Quand j'ai écrit ce code pour la première fois, j'ai essayé avec 0 et cela ne fonctionnait pas. J'ai donc essayé d'autres numéros, et avec ce numéro, ça fonctionnait. Mais il est juste étrange et hackish d'utiliser une sorte de nombre magique ici. – Chris

Répondre

1

Essayez d'utiliser 0 pour eventNumber.

+0

J'ai essayé ceci en premier mais si j'utilise 0, l'événement ne reçoit pas du tout sendet. Moyens je ne reçois pas de réaction. – Chris

+0

Ok, j'ai fait un peu plus de tests et maintenant ça semble fonctionner aussi avec 0. Je ne sais pas pourquoi ça ne fonctionnait pas avant. Les coutures comme j'ai besoin de mettre l'accent sur l'application correctement. – Chris

0

Il semble que le compteur d'événements soit juste un numéro de série, donc il commence à 0 (plus 42599), et augmente de un avant que chaque événement ne soit créé. Vous aurez juste besoin de vous accrocher à la dernière valeur.

Je n'ai pas essayé cela pour moi-même, mais il semble que le numéro n'a pas d'importance tant qu'il s'agit d'un nouveau numéro à chaque fois.

Questions connexes