실행중인 응용 프로그램에 대한 창 목록을 가져오고 싶습니다. 실행중인 응용 프로그램 목록을 [[NSWorkspace sharedWorkspace] runningApplications]
에서 얻을 수 있지만 창 목록은 NSApplication
에서만 사용할 수 있습니다. NSRunningApplication
에서 NSApplication
으로 변환하는 방법이 있습니까? 아니면 창 목록을 더 직접 얻을 수있는 방법이 있습니까?NSRunningApplication의 창을 얻는 방법
답변
CoreGraphics 통화 CGWindowListCopyWindowInfo
을 살펴 봐야합니다.
는이
CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements, kCGNullWindowID);
과 같이 호출 한 후, 윈도우 정보의 배열을 반복 관심있는 응용 프로그램에서있는 사람들을 발견하고 당신이 그것으로 원하는 일을.
안녕하세요 켄! 그것은 좋은 대답/힌트지만, 여전히'CG/NSWindow'를 얻는 방법을 알지 못한다 ;-)'NSRunningApplication'은 윈도우/윈도우 번호를 제공하지 않고 시도 할 때 (아마도 뭔가 잘못하고있다) 충돌하고있다. 'CGWindowListCopyWindowInfo'로 얻은'CGWindowID'를 가지고'NS/CGWindow'를 얻으십시오 –
다른 응용 프로그램을위한 NSWindow를 만들 수 없기 때문입니다. 특정 애플리케이션에 대한 윈도우를 얻는 한,'kCGWindowOwnerPID' 키의 값을 검사하고'NSRunningApplication'의'processIdentifier' 속성과 비교할 수 있습니다. – mattsven
이미 답변 된 질문과 답변은 다음과 같습니다. http://stackoverflow.com/questions/2107657/mac-cocoa-getting-a-list-of-windows-using-accessibility-api –
여기에도 http : // stackoverflow.com/questions/13759688/how-to-find-out-if-an-instance-of-my-app-is-already-running-or-not/13759928#13759928 –
위도우 목록이 더 직접 의미합니까? –