Domanda

Sono uno sviluppatore principiante di Cocoa e sto sviluppando la mia prima applicazione. Voglio leggere un identificatore univoco da qualsiasi finestra di qualsiasi applicazione, che sia Cocoa o Carbon. Le applicazioni Cocoa rendono i loro ID finestra disponibili per AppleScript (anche se sono sicuro che ci sia un modo molto migliore per farlo attraverso un percorso obiettivo C corretto), ma sto provando ad accedere agli ID finestra dai documenti nelle app Adobe. Questo sembra essere molto più complicato. Tutto ciò che riesco a trovare nelle librerie di riferimento è HIWindowGetCGWindowID :

" Questa funzione restituisce l'ID finestra assegnato dal server di finestre quando viene creata una finestra. L'ID finestra non è generalmente utile con qualsiasi altra funzione Carbon, ma può essere utilizzato con altre funzioni di Mac OS X che richiedono un ID finestra, come le funzioni in OpenGL. & Quot;

Può essere usato per ottenere l'ID dal mio programma? O è solo una funzione che può essere utilizzata all'interno di un'applicazione?

Se qualcuno potesse indicarmi la giusta direzione, sarei eternamente grato.

È stato utile?

Soluzione

La funzione HIWindowGetCGWindowID () può restituire un CGWindowID per una delle finestre dell'app, poiché un WindowRef da un altro programma non lo farà essere valido nel tuo.

La funzione CGWindowListCopyWindowInfo () da CGWindow.h restituirà un array di dizionari, uno per ogni finestra che corrisponde ai criteri impostati, inclusi quelli in altre applicazioni. Ti consente di filtrare solo per finestre sopra una determinata finestra, finestre sotto una determinata finestra e "sullo schermo". Windows, ma il dizionario restituito include un ID processo per l'app proprietaria che puoi utilizzare per abbinare la finestra all'app. In ogni dizionario restituito la chiave kCGWindowNumber punterà all'ID della finestra come CFNumber . Esiste anche una funzione CGWindowListCreate () che restituisce solo una matrice di CGWindowID . Fondamentalmente non esiste documentazione per queste funzioni oltre all'intestazione CGWindow.h e Son of Grab codice di esempio. Inoltre, è solo 10.5.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top