【问题标题】:How to deal with external console application programmatically? (Windows)如何以编程方式处理外部控制台应用程序? (视窗)
【发布时间】:2015-03-30 18:10:13
【问题描述】:

我喜欢从 C/C++ 程序(“XYZ.exe”)中启动外部控制台应用程序(“ABC.exe”)。两人会互相影响。一切完成后,我喜欢关闭控制台应用程序。我怎么做?我如何保留或找到它的把手?我需要哪些 Windows API?谢谢

【问题讨论】:

  • abc.exe 是否需要与用户交互,还是可以完全自行运行而无需用户输入?
  • 很难猜出“相互交流”是什么意思。我们生活在互联网时代,它不再是火箭科学。我猜。
  • ABC.exe 将在启动后自行运行,并由 XYZ.exe 关闭。我现在的问题不是关于交互部分,而是如何启动和关闭 ABC.exe。对于启动,我搜索并找到了几个选项:WinExec、shellexecute 和 CreateProcess。但是为了关闭,我想我需要一些方法来找到 ABC.exe 的句柄并发出一些命令。我不确定该怎么做。
  • 没有单一的通用方法可以关闭应用程序。大概是编写 ABC.exe 的人包含了一种关闭它的方法,你必须遵守这些规则。 (或者只是通过 TerminateProcess 终止它。)

标签: windows winapi console


【解决方案1】:

控制台应用程序使用其 STDIN 和 STDOUT 以及 STDERR 句柄进行交互。当您的应用程序启动 ABC.exe 时,它​​可以重定向这些句柄,以便它可以将数据写入 ABC 的 STDIN 并从 ABC 的 STDOUT/STDERR 读取。 MSDN 有一篇文章准确解释了如何做到这一点:

Creating a Child Process with Redirected Input and Output

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    相关资源
    最近更新 更多