2010-06-24 9 views
1

Je veux dire une fenêtre qui ne sera pas accessible via Cocoa, Carbon ou autre API CoreGraphics pour l'obtention de NSWindow *, WindowRef et autres.Comment créer une fenêtre inaccessible sur Mac OS?

Like X11 application on Mac does.

Une telle fenêtre que si vous passez son identifiant de fenêtre à [NSApp windowWithWindowID] ou HIWindowFromCGWindowID() ils retournent tous les deux NULL.

Merci!

+0

Il utilise l'API CoreGraphics non documentée CGSNewWindow(), etc dans sa fonction xp_create_window(). – shoumikhin

+0

Qu'est-ce que vous en avez besoin? –

+0

Parce que j'ai besoin d'obtenir la fenêtre émulée du port graphique de X11, mais elle ne répond pas sur [NSApp windowWithWindowNumber:] ou HIWindowFromCGWindowID() à partir du même processus. Et je suis curieux de savoir comment il crée ses fenêtres de cette façon? – shoumikhin

Répondre

1

Il existe CoreGraphics Private API. Sa définition is available grâce à l'ingénierie inverse. Si une fenêtre est créée avec une telle API, elle ne sera pas accessible via les fonctions [NSApp windowWithWindowNumber: (NSInteger) windowID] ou HIWindowFromCGWindowID().

Xquartz utilise la bibliothèque Xplugin, qui à son tour utilise CoreGraphics Private API. Peut-être que tout le monde connaît libXplugin.dylib et Xplugin.h?

+0

shoumikhin, avez-vous pu l'utiliser ?, at-il résoudre votre problème? - Je suis dans la même situation et je me demande si c'est le chemin vers la solution. – subzero