【发布时间】:2015-02-24 04:39:53
【问题描述】:
我的应用程序不是控制台应用程序。 我正在使用 _popen 从我的代码中运行命令行命令。 _popen 进程运行时会出现一个控制台窗口。 我想隐藏这个窗口。
【问题讨论】:
我的应用程序不是控制台应用程序。 我正在使用 _popen 从我的代码中运行命令行命令。 _popen 进程运行时会出现一个控制台窗口。 我想隐藏这个窗口。
【问题讨论】:
使用ShellExecute() 代替_popen() 或system()。
https://msdn.microsoft.com/en-us/library/windows/desktop/bb762153%28v=vs.85%29.aspx
更多细节: https://msdn.microsoft.com/en-us/library/windows/desktop/bb776886(v=vs.85).aspx
【讨论】:
ShellExecuteEx。这可以替换system。但它只是_popen 的部分替代品,因为它不支持将数据导入或导出子进程。
你可以使用 WinExec("你的 cmd 命令", SW_HIDE);而不是 system 或 _popen
【讨论】:
WinExec 不能很好地替代 _popen,甚至是 system。它不会返回等待和调用GetExitCodeProcess 的进程句柄,也不会让您写入标准输入或从标准输出读取。它在 Win32 的第一个版本中已被弃用,仅提供与 1980 年代 Win16 程序的向后兼容性。