2012-04-21 20 views
2

画面上でマウスの位置を設定する必要があります。他の同様の質問では、それはCGDisplayMoveCursorToPoint(CGDirectDisplayID display, CGPoint point)を使用するように示唆されましたが、私はCGDirectDisplayIDを取得する方法を見つけることができません。 CGDirectDisplayIDを取得する方法や、マウスの位置を設定する方法を教えてください。マウスの位置を設定するにはどうすればよいですか?

答えて

1

ここでそれを行う方法です:

// coordinate at (10,10) on the screen 
CGPoint pt; 
pt.x = 10; 
pt.y = 10; 

CGEventRef moveEvent = CGEventCreateMouseEvent(
    NULL,    // NULL to create a new event 
    kCGEventMouseMoved, // what type of event (move) 
    pt,     // screen coordinate for the event 
    kCGMouseButtonLeft // irrelevant for a move event 
); 

// post the event and cleanup 
CGEventPost(kCGSessionEventTap, moveEvent); 
CFRelease(moveEvent); 

これは、(アップルメニューの隣に、左上)画面上の点(10,10)にカーソルを移動します。

+0

動作しません。何らかの理由で、マウスのxを正しく設定しますが、Yを変更しようとすると、画面の上下にちらつきます。マウスの現在の位置を使用しても。 –

+0

私は様々な 'x'と' y'値で試してみたところ、それぞれに移動しました。投稿する前に他のイベントを投稿したり、このイベントを変更したりしていますか? –

1

Try CGWarpMouseCursorPosition()表示IDは必要ありません。

ディスプレイIDが必要な場合は、[NSScreen screens]によって返された配列から、好きな基準を使用して要素を選択できます。そのNSScreenオブジェクトに-deviceDescriptionを呼び出します。返された辞書から@"NSScreenNumber"というキーで-objectForKey:を呼び出します。

1

let pt = CGPoint(x: 100, y: 10) 
let moveEvent = CGEventCreateMouseEvent(nil, .MouseMoved, pt, .Left) 
CGEventPost(.CGSessionEventTap, moveEvent); 
0

その答えのスウィフト3バージョン助けてくれた:

let pt = CGPoint(x: 100, y: 10) 

let moveEvent = CGEvent(mouseEventSource: nil, mouseType: .mouseMoved, 
mouseCursorPosition: pt, mouseButton: .left) 

moveEvent?.post(tap: .cgSessionEventTap) 
関連する問題