【发布时间】:2023-01-10 18:44:28
【问题描述】:
我必须使用的程序在处理一些数据后打开一个带有消息的 CMD 窗口。 该消息类似于“已完成处理”,我无权访问其他程序背后的代码。
我想要实现的目标是:
- 从 CMD 窗口获取消息并将其写入我自己程序中的文本框(或类似框)。
- 关闭 CMD 窗口
我设法使用
Process[] localByName = Process.GetProcessesByName("cmd");将该过程附加到我的程序,但我无法设法获得输出。谢谢您的帮助。
编辑: 进一步详细说明问题的情况: 我使用命令行命令启动另一个程序。我传递了一些参数,过了一会儿,另一个程序打开了一个带有消息的 cmd 窗口。 如果我正常打开其他程序,则消息会显示在应用程序中。 没有一个参数给我操作输出的选项,我无法将输出传输到另一个文件。
至于为什么我必须这样做:我的任务是为其他程序增加生活质量改进,使用命令行是访问其他程序功能的最简单方法。另一种可用的解决方案是对数据进行反向工程处理。
【问题讨论】:
-
它使用一个分离cmd 窗口只是显示一条“完成”消息?真的吗?您能够/允许寻找替代品吗?听起来很可疑。
-
您是否阅读了 Process Class 的 Microsoft 文档页面,它是 Windows 内核库函数 CreateProcess 的 C# 包装类,调用时没有或带有 STARTUPINFO 结构?
-
为什么 64 位
%SystemRoot%\System32\cmd.exe或 32 位%SystemRoot%\SysWOW64\cmd.exe从 C# 编码的 64 位或 32 位程序中执行,而不是运行真正的可执行文件?cmd.exe还使用CreateProcess和STARTUPINFO结构来运行可执行文件。我不清楚为什么使用CreateProcess运行cmd(没有完整路径和扩展名)和Process类,让cmd.exe在完全启动时运行另一个带有CreateProcess的可执行文件。对于提供的有关任务的信息,这对我来说毫无意义。 -
@Fildor 我在我的问题中添加了更多信息。我希望现在更清楚了
-
@Mofi 我在我的问题中添加了更多信息。我希望现在更清楚了