各位程序员大家好,我在一个C++程序中遇到了一些控制台应用的问题,我的目标如下。
- 创建第一个 CMD 窗口。
- 执行一个命令。(system("打印一些错误文本");)
- 创建第二个 CMD 窗口。
- 将 system(...) 焦点更改为第二个 CMD 窗口。
- 执行一个命令。
- 将 system(...) 焦点更改为第一个 CMD 窗口。
- 执行一个命令。
所有这一切的最终目标是创建一个将由 CMD 应用程序执行的函数,该应用程序将生成另一个 CMD 窗口,在其上执行命令,然后将焦点返回到原始 CMD 窗口以继续执行其他代码。我不需要跟踪窗口,或者能够返回到它。只需创建新窗口,将焦点切换到它,执行命令,将焦点返回到原始窗口。
- 第一个 CMD 窗口在应用程序启动时创建。
- 使用 system(...) 对该窗口执行命令;工作正常。
我创建了第二个 CMD 窗口
HWND new_hWnd = NULL; ShellExecute(new_hWnd, "open", "cmd.exe", NULL, NULL, SW_SHOW);
- 这是我遇到问题的地方,我无法将 system(...) 重定向到不同的 CMD 窗口,这是我需要帮助的部分,因为如果我能解决这个问题,那么步骤 5、6 和 7将很容易完成。
我尝试在网上对此进行研究,并遇到了一些使用“管道”的不同示例,但无法重新创建它们或理解它们。另外,我注意到有一个
GetConsoleWindow();
返回当前 CMD 窗口句柄的函数,这对我来说有点暗示应该有一种方法可以通过使用句柄在 CMD 窗口之间切换,但是由于我没有将焦点切换到另一个 CMD 窗口,所以我无法调用该函数得到它的句柄。
那么,如何使 system(...) 使用句柄来定位不同的 CMD 窗口?如果那不可能,我该如何实现这个“管道”系统。
如果解决方案是后者,请尝试尽可能详细和简单,因为我在网上找到的每个示例都非常庞大且难以阅读/理解。
如果没有简单的方法来实现“管道”,那么请发帖或指出我可以找到的最好的(有助于我理解管道如何工作的)示例,我将继续使用它,直到我弄明白为止。先感谢您!