我有一个调用我的 IDE 的批处理文件,所以我只想知道我们是否可以将我的 IDE 中存在的内容(全部内容)提取到一些文本文件中。
我的批处理文件写在下面
D:\WindRiver\wrenv.exe -p vxworks653-2.2.3 run
PAUSE
是否需要将更多代码添加到我现有的批处理文件中?
我有一个调用我的 IDE 的批处理文件,所以我只想知道我们是否可以将我的 IDE 中存在的内容(全部内容)提取到一些文本文件中。
我的批处理文件写在下面
D:\WindRiver\wrenv.exe -p vxworks653-2.2.3 run
PAUSE
是否需要将更多代码添加到我现有的批处理文件中?
我不确定您对“提取我的 IDE 中存在的内容”有何看法,但一般来说,这类问题是使用自动化工具解决的。此类工具可以从窗口名称、按钮标题、文本内容中获取 Windows 环境中的任何内容……您可能需要从 3thd 方应用程序中获取的所有内容(甚至是 gui 元素的图片)
我建议你看看AutoHotKey,大约 200KB 的 Windows 自动化脚本语言。
通常,您不能批量执行此操作。
在 AutoHotKey 中获取窗口的内容可以很简单:
WinGetText, text, "name of the window"
FileAppend, %text%, c:\out.txt
它可能会变得更复杂一些,但是您可能想要的任何东西都不会涉及超过 10 行的 AHK 脚本。
这是最好的方法,因为它不依赖于给定程序的特性,所以一旦你学习了 AHK,你可以以统一的方式从系统中获取任何信息。
请记住,某些应用程序使用非标准 Windows 组件,并且它们可能无法自动化(但这很少见)。
在社区论坛上有很多有用的函数和库,基本上你可能需要任何东西来获取信息 - 将标准输入/输出重定向到你的文件,COM Accesibilty 模块(在 Windows 中自动化的系统方法),甚至一些 ocr 包装器扫描图像上的信息。
抱歉回复晚了。这是实际的 IDE(D:\WindRiver\wrev.exe -p vxworks653-2.2.3),当我将它放在命令提示符中时,我的 IDE 被调用。请再联系我澄清
谢谢斯蒂芬
我问了一个可能有用的类似问题。只有当您的 IDE 将信息输出到 stdout/stderr 等时,这种方法才可能起作用。
我已经取得了一些(有限的)成功,连接到已经运行的进程以尝试拦截它们正在输出的数据。
具体来说,您要捕捉的是什么?它的一个窗口的输出?如果启动失败会提示错误信息?
[编辑]我仍然不确定您要捕获的确切内容,但听起来您可以从批处理文件中启动 Python 脚本。该脚本启动您的 IDE并捕获 stdout 和 stderr,这将为您提供正常输出和任何错误。
>>> 嗨,我刚刚尝试使用 AutoHotKey....
不,它不正确。
只有当我安装了我没有的 WindRiver 时才能生成正确的代码。好的,让我简短地解释一下。
首先假设 IDE 的标题以“WindRiver”字样开头。WindRiver 必须在其控件层次结构中的某些标准窗口控件中保存文本。有问题的控件类型指导您如何从中获取文本。例如,如果它是 ListView 或 ListBox,则必须使用
ControlGet, outputVar, List,, SysListView321, WindRiver
上面的代码的意思是,“从标题以'WindRiver'开始的应用程序中获取第一个SysListView32控件的文本(因此最后是1),并将其放入ouputVar变量中”
如果它保留在编辑框中,您可以简单地执行以下操作:
ControlGetText, OutputVar, Edit1, WindRiver
这意味着“在应用程序中获取标题为 WindRiver 的第一个编辑控件的内容”
为了获得相关控件的类型和数量,只需打开 Window Spy(右键单击 AHK 托盘图标)并将鼠标悬停在控件上即可查看其详细信息。
整个脚本将如下所示:
Run, d:\WIndriver ....
WinWaitActive, WindRiver
ControlGetText, OutputVar, Edit1, WindRiver
MsgBox %OtputVar%
如果窗口的标题不断变化,您将不得不使用窗口类 instad title 来识别窗口。例如,您可以将记事本定位为
ControlGetText, o, Edit1, Untitled
或者
COntrolGetText, o, Edit1, ahk_class Notepad
第一种方法使用窗口标题,第二种方法使用应用程序的 Window API 类,因为标题可以更改,所以效果更好。
总而言之,要熟悉 AHK,请查看启动示例。我可以向你保证,经过几天的练习,你会发现自己可以根据自己的需要调整任何应用程序。
要了解 AHK 的强大功能以及可以在其中完成哪些惊人的事情,请查看Dock模块。
您无法批量执行此操作并使用 std 重定向,因此您最好习惯 AHK 或一些类似的自动语言(AutoIt、Phantom、WinRunner....)。顺便说一句,这种问题通常会在 AHK 社区请求帮助论坛上的几个小时内得到回答。