我正在寻找一种方法来检测功能区画廊是否打开。我正在使用实现 IUICollection 的 Delphi Ribbon 框架。我使用 IUIFramework.GetUICommandProperty 尝试了几个属性(例如 UI_PKEY_Viewable、UI_PKEY_Enabled),但这些属性都没有返回图库下拉菜单的“打开/关闭”状态。
有谁知道这是否可能?
我正在寻找一种方法来检测功能区画廊是否打开。我正在使用实现 IUICollection 的 Delphi Ribbon 框架。我使用 IUIFramework.GetUICommandProperty 尝试了几个属性(例如 UI_PKEY_Viewable、UI_PKEY_Enabled),但这些属性都没有返回图库下拉菜单的“打开/关闭”状态。
有谁知道这是否可能?
IAccessible
我能够通过使用界面来解决这个问题。(参见https://msdn.microsoft.com/en-us/library/windows/desktop/dd318466(v=vs.85).aspx)
幸运的是,我们已经有了查找特定 UI 元素的功能。它使用AccessibleObjectFromWindow;
from unit ,从主应用程序窗口句柄Winapi.oleacc
中检索对象。IAccessible
从那里,它使用递归检查子项AccessibleChildren
,如下所述:http:
//msdn.microsoft.com/en-us/library/windows/desktop/dd317975 (v=vs.85).aspx
并比较当前元素的具有给定参数的名称。
作为参数,我使用图库中第一项的标题。此项目仅在画廊打开时可用,因此使用我们自定义的“FindElement”功能,我能够区分可见弹出窗口和关闭的弹出窗口。
这可能不是最好的解决方案,但恐怕没有其他...