2016-02-17 4 views
5

In meinem OSX Projekt Ich möchte:Programmatically offen NSWindow in einem anderen Desktop (Raum)

  • identifizieren den Desktop (eine der belichten Spaces), wo ein NSWindow wohnt;

  • Öffnen Sie ein NSWindow in einem bestimmten Space, nicht nur auf aktuellen Space.

Gibt es eine Möglichkeit, diese einfachen Aufgaben zu erledigen?

Durchsuchen der Dokumentation (NSWindowController, NSWindow, NSScreen) Ich kann nichts in Bezug auf mehrere Desktop Management finden.

Vielen Dank im Voraus!

Antwort

4

Sie würden denken, dass es einige API für die Arbeit mit Spaces geben würde, aber es gibt wirklich nicht. Sie können CGWindowListCopyWindowInfo verwenden, um zu bestimmen, in welchem ​​Space ein bestimmtes Fenster ist, aber es gibt keine einfache Möglichkeit, ein bestimmtes Fenster in einem bestimmten Bereich zu öffnen.

Es gibt private API, um Fenster zwischen Räumen natürlich zu verschieben. Ob Sie dies in Ihrer Anwendung verwenden möchten, hängt von Ihren Anforderungen ab - Sie können es natürlich nicht in einem Mac App Store verwenden.

Gefunden eine Kopie-of-a-Kopie der Reverse-Engineering-Header für die ich suchte: https://gist.github.com/rjw57/5495406

+1

Danke Mark. Ich kontaktiere Apple DTS und sie sagten mir: Unsere Ingenieure haben Ihre Anfrage überprüft und sind zu dem Schluss gekommen, dass es keine unterstützte Möglichkeit gibt, die gewünschte Funktionalität zu erreichen, da die Konfiguration des Versandsystems derzeit noch nicht abgeschlossen ist. :( –

+0

Ja, sie müssen unbedingt die CoreGraphicsServices dokumentieren/unterstützen. Ich werde ihnen das auf der nächsten WWDC definitiv sagen. –

Verwandte Themen