C 如何通过命令提示更改标题并保留系统信息
我试图通过命令行启动一个进程,但当我使用C 如何通过命令提示更改标题并保留系统信息,c,windows,C,Windows,我试图通过命令行启动一个进程,但当我使用/k选项cmd时,我丢失了所有系统信息。如何保存这些信息,以及是否存在可以更改以更改标题的环境变量 //first line where I sprintf commands into a buffer sprintf(commandLine_buf,"%s /T:F9 /K TITLE=What is your command ",getenv("ComSpec")) @埃尔克森:谢谢你的建议奏效了。我对它做了一点修改,但效果不错。这就是它看起来的样
/k
选项cmd时,我丢失了所有系统信息。如何保存这些信息,以及是否存在可以更改以更改标题的环境变量
//first line where I sprintf commands into a buffer
sprintf(commandLine_buf,"%s /T:F9 /K TITLE=What is your command ",getenv("ComSpec"))
@埃尔克森:谢谢你的建议奏效了。我对它做了一点修改,但效果不错。这就是它看起来的样子。下面
sprintf(commandLine_buf, "cmd /c PROMPT Speak to me$G & TITLE What is your command? & \"%s\"",getenv("ComSpec"));
我的提示如下所示:
但我希望它看起来像这样:
在最后的实现中,我在另一行获得了
ComSpec
值,并运行了sprintf
函数,如下所示:
char* ComSpecVar;
ComSpecVar = getenv("ComSpec");
sprintf(commandLine_buf, "cmd /c COLOR F9 & PROMPT Speak to me$G & "
"TITLE What is your command? & \"%s\"", ComSpecVar);
随后的提示如下所示:
您是否尝试过
cmd/K“VER&PROMPT=talk to me&TITLE=What is your command”
如果您通过system
运行此命令,该系统已经使用了cmd/c
,因此您可以运行类似于sprintf(commandLine\u buf,“PROMPT talk to me$G&TITLE您的命令是什么?&\%s\”,getenv(“ComSpec”)
)。这将更改shell提示符和控制台标题,然后启动一个新的交互式shell。由system
启动的第一个CMD实例将等待子shell退出。哦,疯狂,你建议@ManthanTilva我已经尝试过类似的方法,但它没有我想要的格式。它在命令标题和Microsoft Windows bla bla bla bla之间的顶部有一个空格。谢谢你的回复,但不是我想要的安静。你是如何用C运行这个命令行的<代码>系统,spawnl
,CreateProcess
,ShellExecute
?添加答案。第一部分使用ComSpec
值而不是“cmd”。另外,单独获取环境变量,以便在未定义ComSpec
的情况下替换“cmd.exe”
。如果未定义ComSpec
,则ComSpecVar
将为NULL
,并且应将其设置为字符串文字“cmd.exe”
。另外,在命令行中的两个位置使用此值,并引用整个命令行,例如sprintf(命令行“\%s\”/c\”颜色F9和提示符Talk to me$g&TITLE您的命令是什么?&\%s\“\”,ComSpecVar,ComSpecVar)
。好吧,这很有趣,我之前尝试过这个精确的sprintf,但没有做到第一句话中的那一点,我将继续努力。