2012-12-07 7 views
5

실행중인 응용 프로그램에 대한 창 목록을 가져오고 싶습니다. 실행중인 응용 프로그램 목록을 [[NSWorkspace sharedWorkspace] runningApplications]에서 얻을 수 있지만 창 목록은 NSApplication에서만 사용할 수 있습니다. NSRunningApplication에서 NSApplication으로 변환하는 방법이 있습니까? 아니면 창 목록을 더 직접 얻을 수있는 방법이 있습니까?NSRunningApplication의 창을 얻는 방법

+0

이미 답변 된 질문과 답변은 다음과 같습니다. http://stackoverflow.com/questions/2107657/mac-cocoa-getting-a-list-of-windows-using-accessibility-api –

+0

여기에도 http : // stackoverflow.com/questions/13759688/how-to-find-out-if-an-instance-of-my-app-is-already-running-or-not/13759928#13759928 –

+0

위도우 목록이 더 직접 의미합니까? –

답변

6

CoreGraphics 통화 CGWindowListCopyWindowInfo을 살펴 봐야합니다.

는이

CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements, kCGNullWindowID); 

과 같이 호출 한 후, 윈도우 정보의 배열을 반복 관심있는 응용 프로그램에서있는 사람들을 발견하고 당신이 그것으로 원하는 일을.

+3

안녕하세요 켄! 그것은 좋은 대답/힌트지만, 여전히'CG/NSWindow'를 얻는 방법을 알지 못한다 ;-)'NSRunningApplication'은 윈도우/윈도우 번호를 제공하지 않고 시도 할 때 (아마도 뭔가 잘못하고있다) 충돌하고있다. 'CGWindowListCopyWindowInfo'로 얻은'CGWindowID'를 가지고'NS/CGWindow'를 얻으십시오 –

+1

다른 응용 프로그램을위한 NSWindow를 만들 수 없기 때문입니다. 특정 애플리케이션에 대한 윈도우를 얻는 한,'kCGWindowOwnerPID' 키의 값을 검사하고'NSRunningApplication'의'processIdentifier' 속성과 비교할 수 있습니다. – mattsven