2016-12-21 1 views
2

Ich suche nach einer Möglichkeit zu erkennen, ob eine Multifunktionsleisten-Galerie geöffnet ist oder nicht. Ich benutze das Delphi Ribbon Framework, das IUICollection implementiert. Ich habe mehrere Eigenschaften mit IUIFramework.GetUICommandProperty (z. B. UI_PKEY_Viewable, UI_PKEY_Enabled) ausprobiert, aber keiner von diesen gibt den "Öffnen/Schließen" -Zustand des Galerie-Dropdowns zurück.Erkennen, ob Galerie in Windows Ribbon Framework geöffnet ist

Weiß jemand, ob das überhaupt möglich ist?

Antwort

0

Ich konnte dies umgehen, indem Sie die IAccessible Schnittstelle verwenden. (siehe https://msdn.microsoft.com/en-us/library/windows/desktop/dd318466(v=vs.85).aspx)

Zum Glück hatten wir bereits Funktionen zum Auffinden bestimmter UI-Elemente. Es verwendet AccessibleObjectFromWindow; von der Einheit Winapi.oleacc, um ein IAccessible Objekt aus dem Hauptfenster des Anwendungsfensters abzurufen.

Von dort überprüft er rekursiv die Elemente Kind AccessibleChildren verwendet wird, wie hier beschrieben: http://msdn.microsoft.com/en-us/library/windows/desktop/dd317975(v=vs.85).aspx und vergleicht den Namen des aktuellen Elements mit einem bestimmten Parameter.

Als Parameter verwende ich die Beschriftung des ersten Artikels in der Galerie. Diese Option ist nur verfügbar, wenn die Galerie geöffnet ist. Mit unserer benutzerdefinierten Funktion "FindElement" konnte ich also zwischen einem sichtbaren und einem geschlossenen Popup unterscheiden.

Dies ist vielleicht nicht die schönste Lösung, aber ich fürchte, es gibt keine andere ...

Verwandte Themen