用Autohotkey v2 获取窗口中控件的文本

有一些软件只能实时查看数据变化,而不提供保存功能,为了将这些数据输出并处理,可通过AHK获取软件中相应控件中的数值。

查找控件位置

新建一个ahk脚本,并单击运行,从而右下角会出现ahk的图标。右键该图标->单击【Window Spay】,即可弹出窗口监控框,如下图所示

在这里插入图片描述

其中【Window Title, Class and Process】中依次提供了窗口标题、类和进程等数据,通过【#HotIf WinActive】语法将其选中,即可对其操作,例如

#HotIf WinActive("ahk_exe Code.exe")
#Space::
{
    MsgBox "你在Code.exe中按下了Win+空格"
}

当在【学习笔记】中按下Win+空格键时,就会弹出消息框。

获取控件

【WinGetControls】可以返回指定窗口中所有控件,例如,下列代码可以在弹出信息框中,将ahk从Code.exe窗口中识别到的控件全部显示出来

#Space::
{
    a := ""
    for n, ctrl in WinGetControls("ahk_exe Code.exe")
    {
        a := a n " " ctrl "  "
    }
    MsgBox a
}

效果如下

在这里插入图片描述

保存文本

ahk在Code.exe中只识别到两个控件,所以用信息框看一下没什么问题,但控件较多时,最好还是将其另存为文件。就算不考虑这个,一会儿想要实时监控某个程序,也需要用到文件写入功能。

【FileOpen】可以创建一个文件,其输入参数为文件名和访问模式。访问模式包括r,w,a,rw等,即读取、写入、追加、读写,这玩意几乎是宇宙通用的。

在文件创建后,可以调用其中的Write或者WriteLine来写入文本,示例如下

#Space::
{
    f = FileOpen("ctrls.txt", "a")
    for n, ctrl in WinGetControls("ahk_exe Code.exe")
    {
        f.WriteLine(n " " ctrl)
    }
    f.Close()
    MsgBox "文件保存成功”
}

这回,再去点击Win+Space,就会创建文件,并写入如下内容

1 Chrome_RenderWidgetHostHWND1
2 Intermediate D3D Window1

获取文本

【ControlGetText】可以在ahk中获取控件的文本,将循环体中的代码改为下面的形式,

ControlGetText(ctrl, "学习笔记.md - code - Visual Studio Code")

即可获取名为"dataSpay.ahk - code - Visual Studio Code"的窗口中ahk检测到的所有控件的内容,结果如下

Chrome Legacy Window
Chrome Legacy Window

AHK在VS Code中只检测到了Chrome Legacy Window,但在某些软件,尤其是winForm程序,其效果非常好。

至此,就实现了窗口中控件内容的获取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微小冷

请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值