创建新进程,然后在 Windows 10 之后向其发送命令

Create new process, then send it a command later, on Windows 10

我可以很好地创建进程并在启动时向其发送命令。

我的问题:

我如何发送另一个命令 - 例如 DIR - 以便稍后执行?

我知道如何在进程创建期间连接和发送多个命令,但我想知道如何在创建进程后发送命令,例如当我在屏幕上看到 pid 007 的新 cmd 控制台后。

我读到我可以使用 Windows WriteFile 函数,但我不知道。

STARTUPINFO siStartupInfo;
PROCESS_INFORMATION piProcessInfo;
    
memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
    
siStartupInfo.cb = sizeof(siStartupInfo);
siStartupInfo.dwFlags = STARTF_USESHOWWINDOW | STARTF_FORCEOFFFEEDBACK | STARTF_USESTDHANDLES;
siStartupInfo.wShowWindow = SW_HIDE;
    
if (CreateProcess(MyApplication, "", 0, 0, FALSE, 0, 0, 0, &siStartupInfo, &piProcessInfo) == FALSE)  
    // How do i send lets say command  dir to my process  here.
    return 0;
}

通常,Inter-Process 通信是两个进程都必须定义才能工作的东西。如果另一个应用程序不是为接收它而设计的(否则一个程序很容易毁掉另一个程序),您不能只向另一个应用程序发送“命令”。

可能您尝试了 cmd.exe /c dir,它会立即在 cmd.exe 上执行“dir”,但这之所以有效,是因为 cmd.exe 具有 /c 参数,而不是因为您通常可以这样做。由于cmd可以执行批处理文件,你可以试试this or this or this.

一般来说,在两个应用程序就发送内容达成一致后,下一步就是如何传输数据。在 Windows 中,这可以用 File Mapping, Sockets, Pipes

来完成