2010-12-23 8 views
0

Gibt es etwas, das GetForegroundWindow auf Mac OS X ähnlich ist?Kakao, um zu wissen, welches Fenster Vordergrund ist

Ich habe zwei Apps, ein Fenster (NSDocument basiert) und eine Befehlszeile Ich möchte ein NSOpenPanel von Befehlszeile-Tool zeigen und möchte es für die NSDocument-basierte App modellieren, aber nicht die Windowref dafür haben ?

Antwort

2

Es gibt ein paar Probleme mit dem, was Sie wollen.

Zunächst haben Anwendungen auf dem Mac keine Fensterreferenzen. Eine Anwendung kann eine beliebige Anzahl von Fenstern haben. Zweitens ist der Zugriff auf andere Windows-Prozesse in Mac OS X eingeschränkt. Es gibt einige APIs für den Zugriff auf andere Prozesse auf verschiedene Arten. Auf jeden Fall erlaubt es Ihnen ein Verweis auf das Fenster einer anderen Anwendung nicht, modale Dialoge für diese Anwendung auszugeben.

Was Sie wollen, ist die Befehlszeile app kommunizieren mit App im Vordergrund, um es zu sagen, das offene Fenster anzuzeigen. Sie können entweder Ihr eigenes Kommunikationsprotokoll (z. B. über verteilte Objekte) einrichten oder Apple Events/AppleScript für die Kommunikation verwenden.

+0

Ich habe Ihre Antwort akzeptiert, aber im Grunde möchte ich NSOpenPanel über das Befehlszeilentool anzeigen. Ich kann das Panel so einstellen, dass es frei beweglich ist, was das Systemlevel-Top-Fenster dazu bringt, es nur auf die nsdokumentbasierte App zu setzen. – user549164