是否可以将命令发送到我的程序运行的控制台窗口?

时间:2012-05-21 14:13:10

标签: c++ windows console

我知道system()函数,但它创建了自己的环境,因此这里设置的每个变量都不会转发到主控制台。我想知道是否可以发送命令,因为它将由用户编写,或者由* .bat文件执行?

我需要这个的原因是我寻找一种方法来设置父CMD进程的env变量。是的,我知道系统不希望我这样做,但也许有一些解决方法......

想法是创建应用程序,将app设置为通过输入管道发送给它的任何变量,如下所示:

echo Bob| setvar name

那么:

echo %name%

会产生Bob

整个想法是更容易从任何程序输出设置变量(我知道如何使用for命令),同时考虑到特殊批处理字符(如^!%)的特殊性,因为这些是{{1}}允许在文件名中。它会使许多cmd脚本变得更简单。

1 个答案:

答案 0 :(得分:1)

您当然可以在与程序相同的控制台窗口中运行程序。这是CreateProcess的默认行为。 MSDN有关于what happens between related processes sharing a console的更多详细信息。在继续运行自己的程序之前,您可能希望等待子进程终止。

然而,这对你的真正目标没有帮助。程序运行的窗口与其任何祖先进程的环境变量完全无关。您必须look elsewhere才能找到真正问题的解决方案。