2016-03-06 3 views
5

Ich versuche Position und Breite von Mac OS X Dock in meiner C++/Qt App zu bekommen. Aber ich kann nur Wege finden, verfügbarer Platz von Desktop zu bekommen, es bedeutet, dass ich Dockhöhe, aber nicht Breite erhalten kann.Wie bekomme ich Position, Breite und Höhe von Mac OS X Dock? Cocoa/Carbon/C++/Qt

Gibt es Möglichkeiten, Dock Position und Breite mit nativen OS API zu bekommen?

+0

Können Sie erklären, warum Sie die Breite des Docks benötigen? Wenn Sie die Größe eines Fensters manuell ändern, können Sie nicht unter das Dock gehen. Dies ist nur möglich, wenn Sie ein Fenster nach unten verschieben, und es ist ziemlich nutzlos. – MBach

+0

Könnte einen Hinweis von diesem Link bekommen http://www.cocoabuilder.com/archive/cocoa/281435-dock-position-and-size.html –

+0

Matthieu, ich möchte Hintergrundfenster/Widget, das Dockgröße angeschlossen ist, machen . – IGHOR

Antwort

0

Sieht nicht wie so etwas möglich ist, nicht einmal von den Apple-APIs, viel weniger von Qt.

Die einzige Lösung, die in den Sinn kommt, ist eine ziemlich grobe, ist ein Screenshot zu machen und einige grundlegende Bilderkennung zu verwenden, um die Position und die Abmessungen des Docks zu finden.

+0

Ich denke, ich kann Cocoa oder Carbon API in Qt C++ Anwendung verwenden, so Qt ist kein Problem. Nehmen Sie einen Screenshot und Bilderkennung könnte funktionieren, aber es ist keine intelligente Lösung und es funktioniert möglicherweise nicht in vielen Situationen. – IGHOR

+0

Ich habe nichts über den Zugriff auf Dock-Eigenschaften von den Apple-APIs gefunden. – dtech

+0

Danke für den Versuch zu helfen. Ich hoffe immer noch, eine Lösung zu finden. – IGHOR

2

Dies könnte in einer hack-freien Lösung helfen, bietet NSScreen eine Methode (visibleframe), die das Menü und das Dock von der Bildschirmgröße subtrahiert. Die Methode frame enthält beides.

[NSStatusBar system​Status​Bar].thickness wird die Höhe der Menüleiste zurückgeben.

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

+0

Danke für die Antwort. Es gibt keine Probleme mit der Höhe, ich kann keine Breite bekommen. – IGHOR

+0

Nun, die einzige API, die ich kenne, die Sie dafür verwenden können, ist Accessibility API von Apple, obwohl es von Ihrem Anwendungsfall abhängt, ob ich es empfehlen würde oder nicht: https://developer.apple.com/reference/applicationservices/axuielement. h? Sprache = objc – MacAndor