Ich versuche, ein Skript zu schreiben, die in der Lage sein wird, mit der rechten Maustaste auf OS X 10.11.5. Ich habe den Foundation-Rahmen zu Objective-C verwendet, um dies zu erreichen. Bisher konnte ich erfolgreich mit der linken Maustaste klicken.Post-Rechtsklick-Ereignis mit CGPostMouseEvent
Das folgende Skript kann Linksklick mit CGPostMouseEvent
, deren Dokumentation in CGRemoteOperation.h gefunden werden kann.
Die Kommentare erwähnen, dass ich eine boolean_t
für den letzten Parameter in CGPostMouseEvent brauche. Ich bin nicht sicher, was das bedeutet, aber ich die folgenden Kombinationen von params ohne Erfolg versucht:
(pt, 1, 1, 0, 1)
(pt, 1, 1, (0, 1))
(pt, 1, 1, 2)
Was die richtige letzte Parameter für CGPostMouseEvent ist ein rechts~~POS=TRUNC auslösen?
#import <Foundation/Foundation.h>
#import <ApplicationServices/ApplicationServices.h>
int main(int argc, char *argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSUserDefaults *args = [NSUserDefaults standardUserDefaults];
// grabs command line arguments -x and -y
//
int x = [args integerForKey:@"x"];
int y = [args integerForKey:@"y"];
// The data structure CGPoint represents a point in a two-dimensional
// coordinate system. Here, X and Y distance from upper left, in pixels.
//
CGPoint pt;
pt.x = x;
pt.y = y;
// This is where the magic happens. See CGRemoteOperation.h for details.
//
// CGPostMouseEvent(CGPoint mouseCursorPosition,
// boolean_t updateMouseCursorPosition,
// CGButtonCount buttonCount,
// boolean_t mouseButtonDown, ...)
//
// So, we feed coordinates to CGPostMouseEvent, put the mouse there,
// then click and release.
//
CGPostMouseEvent(pt, 1, 1, 1);
CGPostMouseEvent(pt, 1, 1, 0);
[pool release];
return 0;
}
'CGPostMouseEvent' ist in Mac OS 10.6 veraltet. – Willeke