2012-04-21 2 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); 

이 (Apple 메뉴 옆에, 왼쪽 상단) 화면에 점 (10,10)로 커서를 이동합니다.

+0

작동하지 않습니다. 어떤 이유로 마우스의 x를 올바르게 설정하지만 Y를 변경하려고하면 화면의 상단과 하단 사이에 깜박입니다. 마우스의 현재 위치를 사용하더라도. –

+0

나는 다양한'x'와'y' 값으로 시도해 보았고, 그것들 각각으로 옮겨갔습니다. 게시하기 전에 다른 이벤트를 게시하거나이 이벤트를 수정하고 있습니까? –

1

시도 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) 
관련 문제