2016-03-06 28 views
5

Sto cercando di ottenere la posizione e la larghezza di Mac OS X Dock nella mia app C++/Qt. Ma posso trovare solo modi per ottenere lo spazio disponibile del desktop, significa che posso ottenere l'altezza del Dock, ma non la larghezza.Come ottenere posizione, larghezza e altezza del Dock di Mac OS X? Cocoa/Carbon/C++/Qt

Esistono modi per ottenere la posizione e la larghezza del Dock utilizzando l'API del sistema operativo nativo?

+0

si può spiegare perché è necessario la larghezza del bacino? Quando ridimensioni manualmente una finestra non puoi andare sotto il Dock. Questo è possibile solo quando si sposta una finestra verso il basso, ed è abbastanza inutile. – MBach

+0

Potrebbe ottenere un indizio da questo link http://www.cocoabuilder.com/archive/cocoa/281435-dock-position-and-size.html –

+0

Matthieu, Voglio rendere la finestra di sfondo/widget che è collegato alla dimensione del Dock . – IGHOR

risposta

0

Non sembra possibile che una cosa del genere sia possibile, nemmeno dalle API Apple, molto meno da Qt.

L'unica soluzione che viene in mente, un po 'rozza, è quella di prendere uno screenshot e utilizzare alcune immagini di riconoscimento di base per trovare la posizione e le dimensioni del dock.

+0

Penso di poter utilizzare l'API Cocoa o Carbon nell'applicazione Qt C++, quindi Qt non è un problema. Scatta uno screenshot e il riconoscimento dell'immagine potrebbe funzionare, ma non è una soluzione intelligente e potrebbe non funzionare in molte situazioni. – IGHOR

+0

Non ho trovato nulla sull'accesso alle proprietà del dock dalle API Apple. – dtech

+0

Grazie per aver cercato di aiutare. Spero ancora di trovare una soluzione. – IGHOR

2

Questo potrebbe aiutare in una soluzione priva di hack, NSScreen fornisce un metodo (visibleframe) che sottrae il menu e il Dock dalle dimensioni dello schermo. Il metodo frame contiene entrambi.

[NSStatusBar system​Status​Bar].thickness restituirà l'altezza della barra dei menu.

https://developer.apple.com/reference/appkit/nsscreen/1388369-visibleframe?language=objc

+0

Grazie per la risposta. Non ci sono problemi di altezza, non riesco a ottenere Larghezza. – IGHOR

+0

Bene, l'unica API che conosco che è possibile utilizzare è l'API di accessibilità di Apple, anche se dipende dal tuo caso di utilizzo se lo consiglierei o meno: https://developer.apple.com/reference/applicationservices/axuielement. h? language = objc – MacAndor