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