Kakao: Erhalten der aktuellen Mausposition auf dem Bildschirm
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.
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;