2009-07-18 6 views
1

두 번째 최전방 앱을 결정하는 방법을 찾고 있습니다. 여기에 그 뜻이 있습니다.두 번째로 앞쪽에있는 앱?

Xcode, Interface Builder 및 내 응용 프로그램의 순서로 3 개의 응용 프로그램을 실행한다고 가정 해 봅니다. Command-Tab을 누르면 스위처에서 네 개의 응용 프로그램 (왼쪽에서 오른쪽으로), 응용 프로그램, Interface Builder, Xcode 및 Finder가 표시됩니다.

그럼 Finder로 전환한다고 해봅시다. 앱 스위처의 새로운 주문은 Finder, 내 애플리케이션, Interface Builder 및 Xcode입니다.

그런 다음 다시 내 응용 프로그램으로 전환하면 주문이 내 응용 프로그램, Finder, 인터페이스 작성기 및 Xcode입니다.

내가 호출 할 수있는 API를 찾고 있는데 인터페이스 빌더가 두 번째 최전방 앱이지만 그 인터페이스로 다시 전환하면 Finder가됩니다.

전혀 다른 경우 내 앱은 에이전트 응용 프로그램 (LSUIElement = YES)이므로 앱 전환기에 실제로 나타나지 않습니다.

이렇게 할 수있는 API가 있습니까? 내가 찾은 유일한 대안은 NSWorkspace에 따라 activeApplication이 무엇인지 계속 모니터링하는 타이머를 실행하는 것입니다. 이 기능은 시작하는 경우를 제외하고는 잘 작동합니다. 가능하다면 출시 할 때 가장 앞선 두 번째 응용 프로그램을 알고 싶습니다.

아이디어가 있으십니까?

+0

나는 Dock이 지속적인 모니터링 방법을 사용하고 있다고 생각하지만, 이론적으로 Dock을 종료하고 그 결과로 주문이 뒤섞 이는지 확인할 수 있습니다. 독 (Dock)조차도 발사 순서를 결정할 수 없다면 적어도 시도하는 데 시간을 낭비하지 않아도됩니다. :) –

답변

0

출시시 두 번째 최전방 응용 프로그램이 마지막으로 실행되는 응용 프로그램이 아니겠습니까?

+0

아마도. 나는 어떻게 그것을 얻을 수 있 었는가? –

0

당신은 아마의 정보를 조합 할 수 있습니다 :

프로세스 관리자 참조 (GetFrontProcess(), GetNextProcess())

Foundation.framework/Headers/NSGraphics.h (NSCountWindows(), NSWindowList())
석영 윈도우 서비스 참조
CoreGraphics.framework/Headers/CGWindow.h
code.google.com CGSPrivate.h
www.cocoadev.com CoreGraphicsPrivate

+0

이것에 대한 더 많은 조사가 끝나자 프로세스 관리자의 프로세스 순서가 Dock의 앱 순서와 완전히 다릅니다. = ( –

관련 문제