c++ - Windows C++ CMD窗口切换

标签 c++ windows cmd pipe

各位程序员大家好,我在 C++ 程序中的一些控制台应用程序有问题,我的目标如下。

  1. 创建第一个 CMD 窗口。
  2. 执行命令。 (system("打印一些错误文本");)
  3. 创建第二个 CMD 窗口。
  4. 将系统(...)焦点更改为第二个 CMD 窗口。
  5. 执行命令。
  6. 将系统(...)焦点更改为第一个 CMD 窗口。
  7. 执行命令。

所有这一切的最终目标是创建一个将由 CMD 应用程序执行的函数,该应用程序将生成另一个 CMD 窗口,在其上执行命令,然后将焦点返回到原始 CMD 窗口以继续执行其他代码。我不需要跟踪窗口,也不需要返回到它。只需创建新窗口,将焦点切换到它,执行命令,将焦点返回到原始窗口。


  1. 第一个 CMD 窗口在应用程序启动时创建。
  2. 正在使用 system(...) 向该窗口执行命令;工作正常。
  3. 我创建了第二个 CMD 窗口

    HWND new_hWnd = NULL;
    ShellExecute(new_hWnd, "open", "cmd.exe", NULL, NULL, SW_SHOW);
    
  4. 这是我遇到问题的地方,我无法将 system(...) 重定向到不同的 CMD 窗口,这是我需要帮助的部分,因为如果我能解决这个问题,那么第 5 步, 6 和 7 很容易完成。

我曾尝试在线研究这一点,并遇到了一些使用“管道”的不同示例,但无法重新创建或理解它们。另外,我注意到有一个

    GetConsoleWindow();

返回当前 CMD 窗口句柄的函数,这对我来说有点表明应该有一种方法可以通过使用句柄在 CMD 窗口之间切换,但由于我没有将焦点切换到另一个 CMD 窗口,所以我无法调用该函数来获取它的句柄。

那么,我该如何让 system(...) 以不同的 CMD 窗口为目标呢?如果那不可能,我该如何实现这个“管道”系统。

如果解决方案是后者,请尝试尽可能详细和简单,因为我在网上找到的每个示例都非常庞大且难以阅读/理解。

如果没有简单的方法来实现“管道”,那么请发布或指出你能找到的最好的(有助于我理解管道工作原理的东西)示例,我会继续使用它直到我弄清楚.提前致谢!

最佳答案

您可以通过在调用 CreateProcess 时指定 dwCreationFlagsCREATE_NEW_CONSOLE 来为新进程创建一个新控制台。

查看文档:

关于c++ - Windows C++ CMD窗口切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15644150/

相关文章:

c++ - 试图用多态来沮丧,出了什么问题?

windows - 如何在 Cygwin 上安装 CMake?

C# 执行 cmd 命令很慢

java - 在cmd上重置程序的方法?

c++ - Firebreath C++一些指针的理解

c++ - 修改 Makefile 以包含库并使用 C++11

c++ - 分析波头

java - 从 Java 调用 mysql.exe

python - 两个文件在行方面的区别

windows - 使用 xcopy 批量覆盖只读文件