ココア:画面上に現在のマウスの位置を取得します
質問
私はXcodeのを使ってMacで画面上のマウスの位置を取得する必要があります。私はおそらくそれを行ういくつかのコードを持っているが、私は常に0としてxとyを返します:
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座標として、またはこの翻訳のいずれかを取得する必要があります。
解決 2
CGEventRef ourEvent = CGEventCreate(NULL);
point = CGEventGetLocation(ourEvent);
CFRelease(ourEvent);
NSLog(@"Location? x= %f, y = %f", (float)point.x, (float)point.y);
他のヒント
S /彼は印刷しようとしていることは%dとして出浮くので
作者の元のコードは動作しません。正しいコードは次のようになります:
NSPoint mouseLoc = [NSEvent mouseLocation]; //get current mouse position
NSLog(@"Mouse location: %f %f", mouseLoc.x, mouseLoc.y);
これを行うには、カーボンに行く必要はありません。
CG環境とNS環境を混合注意。あなたはNSのmouseLocation方法でマウス位置を取得した場合、あなたは、あなたが期待される画面上のポイントに送信されることはありませんCGWarpMouseCursorPosition(するCGPoint)を使用します。 NSは、底を使用しながら、トップ用いCGから問題の結果は、(0,0)のように左(0,0)として残す。
でこの質問への答えのスウィフトの
let currentMouseLocation = NSEvent.mouseLocation()
let xPosition = currentMouseLocation.x
let yPosition = currentMouseLocation.y
NSLog(@"%@", NSStringFromPoint(point));
のNSLogが真である;
所属していません StackOverflow