Frage

Ich brauche die Mausposition auf dem Bildschirm auf einem Mac mit Xcode zu bekommen. Ich habe einige Code, der angeblich das tut, aber ich immer wieder x und y als 0:

void queryPointer()
{

    NSPoint mouseLoc; 
    mouseLoc = [NSEvent mouseLocation]; //get current mouse position

    NSLog(@"Mouse location:");
    NSLog(@"x = %d",  mouseLoc.x);
    NSLog(@"y = %d",  mouseLoc.y);    

}

Was mache ich falsch? Wie bekommt man die aktuelle Position auf dem Bildschirm? Auch schließlich diese Position (in einem NSPoint gespeichert) muss in eine CGPoint kopiert werden, um mit einer anderen Funktion verwendet werden, so dass ich diese entweder als x, y-Koordinaten erhalten muß oder diese übersetzen.

War es hilfreich?

Lösung 2

CGEventRef ourEvent = CGEventCreate(NULL);
point = CGEventGetLocation(ourEvent);
CFRelease(ourEvent);
NSLog(@"Location? x= %f, y = %f", (float)point.x, (float)point.y);

Andere Tipps

Der ursprüngliche Code des Autors nicht funktioniert, weil er / sie zu drucken versucht, schwimmt aus als% d. Der richtige Code wäre:

NSPoint mouseLoc = [NSEvent mouseLocation]; //get current mouse position
NSLog(@"Mouse location: %f %f", mouseLoc.x, mouseLoc.y);

Sie müssen nicht auf Kohlenstoff zu gehen, dies zu tun.

Vorsicht vor der NS-Umgebung mit der CG-Umgebung zu vermischen. Wenn Sie die Mausposition mit der NS mouseLocation Methode erhalten dann verwenden CGWarpMouseCursorPosition (CGPoint) Sie werden nicht auf den Punkt auf dem Bildschirm gesendet werden erwartet. Das Problem ergibt sich aus CG unter Verwendung von oben links (0,0), während NS verwendet unten als (0,0) links.

Die Antwort auf diese Frage in Swift

let currentMouseLocation = NSEvent.mouseLocation()
let xPosition = currentMouseLocation.x
let yPosition = currentMouseLocation.y
NSLog(@"%@", NSStringFromPoint(point));

NSLog ist wahr;

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top