Ms office 如何检测Microsoft Office应用程序中当前处于活动状态的功能区?

Ms office 如何检测Microsoft Office应用程序中当前处于活动状态的功能区?,ms-office,autohotkey,ribbon,onenote,Ms Office,Autohotkey,Ribbon,Onenote,我已经看过ActiveControlList,但不幸的是,它不是一个可靠的方式来告诉活动功能区。 具体地说,我正在寻找一种可靠的方法来判断“公式工具”功能区是否在OneNote中处于活动状态。 您有什么建议吗?据我所知,功能区GUI没有特定的命令。 用于检测功能区GUI中的更改。您可以使用激活的公式工具控件的图像进行搜索,如果找到它,它将把ErrorLevel设置为1 此外,始终使用自动热键及其文档(最新版本,新官方网站)!AutoHotkey及其AutoHotkey.com上的文档已过时,您可

我已经看过ActiveControlList,但不幸的是,它不是一个可靠的方式来告诉活动功能区。 具体地说,我正在寻找一种可靠的方法来判断“公式工具”功能区是否在OneNote中处于活动状态。
您有什么建议吗?

据我所知,功能区GUI没有特定的命令。 用于检测功能区GUI中的更改。您可以使用激活的公式工具控件的图像进行搜索,如果找到它,它将把
ErrorLevel
设置为
1


此外,始终使用自动热键及其文档(最新版本,新官方网站)!AutoHotkey及其AutoHotkey.com上的文档已过时,您可能在使用它们时遇到一些问题

功能区不是普通控件,从普通VBA或ahks内置COM很难使用,但您可以使用Microsoft的活动辅助功能API

您可以使用,这样就不需要知道所有的dll调用

但是你仍然需要知道你需要什么部件,以及寻找什么来真正使用它。您可以使用jethrows,它将告诉您元素角色、状态、ChildCount等,因此当您找到您要查找的项目时,您可以使用accViewer提供的树或路径

Word功能区路径示例:4.3.4.1.4.1.4.1.4.1.1.4.13.1.1

OneNote:4.3.4.1.4.1.4.1.4.1.4.4.4.10.1.1

下面是一个示例当您按F6键时,使用Acc_get()在OneNote PP 2010中显示当前功能区名称

f6::
name := Acc_Get("Name", "4.3.4.1.4.1.4.1.4.1.4.10.1.1", 0, "Ahk_class Framework::CFrame")
tooltip % name
return
注意:此路径用于固定功能区时,即始终可见


使用windowSpy!签出?是的,当不同的功能区处于活动状态时,我看不到windowSpy有什么不同。我目前没有机会测试它,但windowSpy是什么样的控件?@JoeDF我在windowSpy中测试了Microsoft Office Word 2013功能区菜单。控制之间没有区别,我不是在要求区别。ClassNN名称是什么,控件的名称或类型是什么?