如何检测Microsoft Office应用程序中当前活动的功能区?

时间:2014-12-17 07:07:39

标签: ms-office autohotkey ribbon onenote

我查看了ActiveControlList,但不幸的是,这不是一种可靠的方式来告诉活动功能区。 具体来说,我正在寻找一种可靠的方法来判断方程工具功能区是否在OneNote中处于活动状态。 你有什么建议吗?

2 个答案:

答案 0 :(得分:3)

功能区不是普通控件,可能很难使用普通VBA或内置COM,但您可以使用Microsoft的Active Accessibility API

您可以使用Acc lib,因此您无需了解所有dll电话

但是你仍然需要知道你需要哪些部分,以及要真正使用它的方法。您可以使用jethrows AccViewer它会告诉您Role,State,ChildCount等元素,因此当您找到之后的项目时,您可以使用accViewer提供的树或路径。 / p>

Word功能区路径示例:4.3.4.1.4.1.4.1.4.1.4.13.1.1

OneNote:4.3.4.1.4.1.4.1.4.1.4.10.1.1

以下是示例,使用Acc_get()在按下F6时显示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

注意:此路径适用于固定功能区,即始终可见

Forum topic with images

答案 1 :(得分:0)

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

此外,始终使用来自http://ahkscript.org/的AutoHotkey及其文档(当前最新版本,新官方网站)! Autohotkey.com上的AutoHotkey及其文档已过时,使用它们可能会遇到一些问题!