检测是否在Windows Ribbon Framework中打开了库

时间:2016-12-21 09:53:53

标签: delphi windows-ribbon-framework

我正在寻找一种方法来检测是否打开了功能区库。我正在使用Delphi Ribbon Framework,它实现了IUICollection。我使用IUIFramework.GetUICommandProperty(例如UI_PKEY_Viewable,UI_PKEY_Enabled)尝试了几个属性,但这两个属性都没有返回"打开/关闭"画廊下拉状态。

有人知道这是否可行?

1 个答案:

答案 0 :(得分:0)

我可以使用IAccessible界面解决这个问题。 (见https://msdn.microsoft.com/en-us/library/windows/desktop/dd318466(v=vs.85).aspx

幸运的是,我们已经具备了查找特定UI元素的功能。它使用单元AccessibleObjectFromWindow;中的Winapi.oleacc从主应用程序窗口句柄中检索IAccessible对象。

从那里,它使用AccessibleChildren递归检查子项,如下所述: http://msdn.microsoft.com/en-us/library/windows/desktop/dd317975(v=vs.85).aspx 并将当前元素的名称与给定参数进行比较。

作为参数,我使用图库中第一项的标题。此项仅在图库打开时可用,因此使用我们的自定义“FindElement”功能,我能够区分可见的弹出窗口和关闭的弹出窗口。

这可能不是最好的解决方案,但我担心没有其他的......