실제로 마우스를 클릭하지 않고 Cocoa 응용 프로그램에서 마우스 클릭을 시뮬레이션하고 싶습니다. 현재 마우스 위치에서 클릭에 응답해야하는보기를 파악할 필요가 없습니다.NSWindow에서 마우스 클릭 시뮬레이션
나는 코코아 프레임 워크가 어떤 뷰가 응답해야하는지 파악할 수 있기를 원하므로 NSView 객체의 메소드 호출이 내가 찾고있는 것이라고 생각하지 않는다. 즉,이 메서드를 호출하게 될 메서드 호출이 필요하다고 생각합니다.
현재 CGEventCreateMouseEvent 및 CGEventPost를 사용하여 특정 전역 위치에서 마우스를 클릭하여이 작업을 수행 할 수 있습니다. 그러나이 기술은 실제로 마우스를 클릭합니다. 그래서 이것은 작동하지만, 나는 그 행동에 완전히 만족하지 않습니다. 예를 들어, CGEventPost가 호출되는 동안 키보드의 키를 누르고 있으면 해당 키가 이벤트로 랩핑됩니다. 또한, 다른 프로세스의 창을 클릭하여 시뮬레이션 할 창 위로 이동하면 CGEventPost 메서드가 해당 창에서 마우스를 클릭합니다. 즉, 프로세스 전반에 걸쳐 전 세계적으로 활동하고 있습니다. 하나의 창에서 작동하는 기술을 원합니다. NSWindow 객체의 어떤 것?
코코아 문서에서 "마우스 이벤트가 NSWindow 객체에 의해 NSView 객체에 전달되었습니다"라는 내용을 읽었습니다.
확인. 그래서 파견을하는 방법을 알고 싶습니다. 창에서이 메서드를 호출 한 다음 현재 마우스 위치가 주어지면 NSView에서 호출 할 프레임 워크를 파악하도록합니다.
도움을 주시면 감사하겠습니다. Cocoa 프레임 워크를 배우기 시작한 것이므로 여기에있는 용어 나 verbage가 맞지 않다면 사과드립니다.
[self mouseDown: nil];
을 그리고 화면에 마우스 위치를 얻을 :
['- [NSApplication sendEvent :]'] (http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSApplication_Class/Reference/Reference.html)은 기본적으로 입력 이벤트에 대한 엔트리 포인트; 거기에서 (일반적으로) 창으로 넘어갑니다. 즉, "시뮬레이션"과 "실제로"마우스를 클릭하는 것 사이의 구분은 명확하지 않습니다. 당신이 피하려고하는'CGEvent' 과정의 특징은 무엇입니까? 예를 들어 물리적 마우스 장치에는 서보가 없으므로 버튼을 움직이게됩니다 (실제로는 클릭하는 것입니다). –
편집 됨. Thx 귀하의 의견을. –
@JoshCaswell 이것은 좋은 접근 방법 인 것처럼 보이지만 작동시키지 못합니다. 코드를 게시 하겠지만 Objective C 브릿지를 사용하여 Clozure로 작성되었으므로 구문 분석에 약간 과중 할 수 있습니다. sendEvent를 사용하여 시뮬레이션 된 마우스 클릭의 예제를 온라인으로 찾을 수 없습니다. 우연히 할 수 있니? –