web-dev-qa-db-ja.com

ココア:画面上の現在のマウス位置を取得する

Xcodeを使用してMacの画面上でマウスの位置を取得する必要があります。私はおそらくそれを行ういくつかのコードを持っていますが、私は常にxとyを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);    

}

私は何が間違っているのですか?画面上の現在の位置をどのように取得しますか?また、最終的には、その位置(NSPointに保存)をCGPointにコピーして、別の関数で使用する必要があるため、これをx、y座標として取得するか、これを変換する必要があります。

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

作成者がフロートを%dとして出力しようとしているため、作成者の元のコードは機能しません。正しいコードは次のとおりです。

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

これを行うためにCarbonに行く必要はありません。

57
MarcWan

NS環境とCG環境の混合に注意してください。NS mouseLocationメソッドでマウスの位置を取得した場合、CGWarpMouseCursorPosition(cgPoint)を使用しても送信されません。この問題は、CGが左上を(0,0)として使用しているのに対し、NSは左下を(0,0)として使用しているためです。

12
user3581648

Swiftのこの質問への答え

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

NSLogはtrueです。

0