Nicht-besessenes Fenster immer im Vordergrund setzen - Wie die App "Afloat"
Ich habe einen globalen Hotkey mit @ eingerichtRegisterEventHotkey
. Wenn der Benutzer darauf drückt, wird das aktuell fokussierte Fenster mit @ angezeigCGWindowListCopyWindowInfo
, und dann muss ich es immer oben einstellen.
Wenn sich das aktuelle Fenster in meinem Prozess befindet (von dem aus ich den Code ausführe), kann ich einfach das @ konvertierewindowNumber
vonCGWindowListCopyWindowInfo
zu einerNSWindow
und TUsetLevel
:
nswin = [NSApp windowWithWindowNumber:windowNumber]
[nswin setLevel: Int(CGWindowLevelForKey(kCGFloatingWindowLevelKey))]
Mein Proble Ich kann dies nicht tun, wenn sich das aktuell fokussierte Fenster nicht in meinem Prozess befindet. Können Sie mir bitte zeigen, wie?
Bestellung, die ich versucht habe:
Diese App hier mit dem Namen "Afloat" verwendete "SIMBL", um dies zu erreichen. Von jedem Fenster aus können Sie Cmd + A drücken und es wird immer oben gesetzt. Ich versuche jedoch, C / ObjC von meiner normalen Desktop-App aus zu nutzen, ohne auf Helfer wie SIMBL zu verzichten.Quelle:Force behält das App-Fenster im Vordergrund - Mac OS XSIMBL:http: //www.culater.net/software/SIMBL/SIMBL.phAfloat:https: //www.macupdate.com/app/mac/22237/afloaIch komme überCGSSetWindowLevel
imCGPrivate.h
- undokumentiertes Zeug -https: //gist.github.com/Noitidart/3664c5c2059c9aa6779f#file-cgsprivate-h-L6 - Ich erinnere mich jedoch, dass ich in der Vergangenheit so etwas versucht habe, aber beim Versuch, eine Verbindung zu einem Fenster herzustellen, das sich nicht im aufrufenden Prozess befindet, eine Fehlermeldung angezeigt wurde.
Nur der Eigentümer eines Fensters kann es manipulieren. Apple hat also das Konzept eines universellen Eigentümers, der alle Fenster besitzt und sie alle manipulieren kann. Es kann immer nur einen universellen Eigentümer geben (das Dock).
Maybe, gibt es überhaupt etwas, das vorgibt, dass mein Anrufvorgang vorübergehend das Dock ist? Könnte seinCGSGetConnectionIDForPSN
für das Dock dann diese Verbindung verwenden?
Meine Verwendung: Ich versuche, die Funktionalität meines kostenlosen Open Source-Browser-Addons zu replizieren -https: //addons.mozilla.org/en-US/firefox/addon/topick - also mein Aufrufvorgang bei Firefox. Es funktioniert momentan unter Windows und Linux und muss nur herausfinden, wie es unter Mac für Nicht-Firefox-Fenster funktioniert.