UIA、MSAA 与软件附加信息
窗口标题不足以区分当前内容时,可以取得鼠标下的控件名称、文件路径或网页链接。Diatom 通过 UIA、MSAA、窗口消息、管道或配套软件提供方取得这些信息。
什么情况下需要它
- 同一浏览器中,对网页链接和普通区域执行不同动作。
- 在资源管理器中取得鼠标指向的文件。
- 根据按钮或列表项名称选择命令。
如果只是“在某个程序里打开记事本”,不需要先配置这些功能。
两个配置文件的分工
conf\default\uia.toml 配置 UIA/MSAA 采集;attach.toml 配置软件专属消息、管道、标题解析等附加方式。旧配置里还可能有遗留段;并非每个存在的段都仍被主程序读取。
UIA 示例:
ini
[uia_property]
name=30005
value=30045
auto_id=30011
[uia:e:notepad]
def=name|value|@auto_ide 表示进程,c 表示窗口类,ec 表示进程与窗口类组合;e+c、c+c 表示与控件类组合。字段名应与发行包提供的配置合并,不重复建立已有段。
name 这样的普通字段会进入内容分类;@name 主要作为原始字段使用,避免生成同样的附加分类。默认 UIA 字段常带 uia_ 前缀;浏览器扩展的 ui_id 等字段属于另一条数据来源。
MSAA 示例:
ini
[acc:e:example_app]
def=value|name|role|pos示例中的 example_app 需要替换成实际进程名。
为什么有时取不到
目标软件可能不公开相应信息,浏览器扩展可能未连接,窗口权限可能不同,或者本次采集没有及时完成。先查看实际字段,再编写条件;不要仅因为配置中写了某个字段就假定它一定存在。
同一目标上较具体的 UIA/MSAA 配置优先匹配,采集配置不会无条件累加全部规则。
浏览器与外部提供方
网页 URL、链接、选中文本和图像等信息可能来自配套扩展或软件接口。启用主程序中的服务端口,不等于已经安装并连接提供方。发行包应明确给出需要安装的组件及测试动作。
基础配置不应开启自己不用的集成。想读取和使用已有字段,参考 运行上下文。