2009-12-30 4 views
6

방금 ​​초점을 잃어버린 응용 프로그램을 얻으려면 NSWorkspaceDidDeactivateApplicationNotification 알림을 관찰하고 있습니다. 알림 개체의 userInfo 사전 키 - NSWorkspaceApplicationKey -에서 가져온 NSRunningApplication 인스턴스로 끝납니다.NSRunningApplication 인스턴스를 통해 응용 프로그램의 기본 창 얻기

알림에서 응용 프로그램의 기본 창을 얻을 수있을 것이라고 생각했지만 NSRunningApplication이 제한되어있는 것처럼 여기에서 어디로 가야할지 모르겠습니다. 어떤 도움을 주시면 감사하겠습니다.

BTW - MacRuby를 사용하고 있지만 답변이 MacRuby에있을 필요는 없습니다.

감사

답변

4

애플은 전통적으로 이런 종류의 일에 대해 꽤 잠겨있었습니다. NSRunningApplication 자체는 10.6에서 소개되었으며 방금 말씀 드렸듯이 약간 제한적입니다. 원하는 작업에 따라 대답은 Accessibility framework이거나 CGWindow API 일 수 있습니다. NSRunningApplication의 processIdentifier를 사용하여 해당 API와 일치시킬 수 있습니다.

+0

감사합니다. 두 API를 살펴 보겠습니다. – alistairholt

2

그것은이 다른 앱의 메인 화면을 얻을 매우 어렵습니다; 그들은 심지어 코코아로 보장되지 않습니다! Carbon, Java, Qt, Mono 중 하나 일 수 있습니다. 해킹을하지 않는 한 다른 앱의 NSWindow를 얻을 수있는 방법은 없습니다. Accessibility API을 사용하면 다른 응용 프로그램의 창 정보 등을 프레임 워크와 별도로 사용할 수는 있지만 사용하기가 쉽지 않습니다.

+0

감사합니다. 접근성 API를 살펴 보겠습니다. – alistairholt

1

응용 프로그램이 AppleScript 지원 또는 다른 방법을 통해 IAC에 참여하는 것을 선택하지 않는 한, 자신의 힙 공간 외부에있는 창이나 다른 것을 만지지 마십시오.

관련 문제