如何在C++程序中打开一个新的cmd.exe并获取其句柄

how to open a new cmd.exe in C++ program and get its handle

本文关键字:cmd 一个 exe 句柄 获取 程序 C++      更新时间:2023-10-16

我有一个程序在Windows上运行cmd.exe。我想在程序启动时打开第二个cmd.exe。然后程序将接收来自cmd.exe的stdin的数据,来自程序的数据将来自cmd.exe的stdout。

两个cmd的stdin和stdout.exe是独立的。该程序还可以显示有关第一个cmd.exe的信息。它不是重定向。

在 Linux 上,我可以使用 proxy_openpt(( 和 system("xterm -SX/X"( 来控制终端的输入和输出。

我已经尝试了createprocess((和pipe,但我不知道如何获得第二个cmd的句柄.exe以接收其输入。

请帮助我,非常感谢!!

只有一个 Windows

控制台可以与 Windows 上的单个进程相关联。

但是,您当然可以使用一些IPC来控制另一个进程,该进程仅充当您的第二个控制台。Helios在 cplusplus.com 前段时间写了一个简单的例子来说明如何做到这一点:在"额外的控制台"上的链接链接。

代码可以按原样使用,但您始终可以使用它来通知自己的代码。

你可以试试:

start cmd.exe @cmd /k "Command

或:

start cmd.exe
start file.cmd 

您可以从与 CreateProcess 一起使用的 PROCESS_INFORMATION 结构中获取句柄。

PROCESS_INFORMATION文档