控制台提示 window 出现在系统 ("start dir") 但不出现在系统 ("start ipconfig")

Console prompt window appear on system("start dir") but not on system("start ipconfig")

我尝试创建一个简单的 UI,它在后台运行命令提示符(但 windows 控制台不能消失),同时单击每个按钮,分别

但之前,我尝试过类似 system("start dir"); 的方法来查看按钮是否有效。

这是问题所在:当我单击左侧按钮时,windows 控制台出现并且不退出单元,我将其关闭。但这只适用于 system("start dir");。如果我将 dir 更改为 ipconfig(或另一个调用函数),windows 控制台将出现一秒钟然后退出。我尝试了 system("PAUSE");getch(); 等,但它不起作用。

为什么这个命令对 dir 有效,但对另一个命令无效?

DIR 和 IPCONFIG 有根本的区别,DIR 命令内置在命令处理器中(又名 shell),IPCONFIG 是一个单独的程序,存储在 c:\windows\system32.

当您键入 START /?在命令行然后你可以看到为什么它以不同的方式对待它们:

If it is an internal cmd command or a batch file then
the command processor is run with the /K switch to cmd.exe.
This means that the window will remain after the command
has been run.

If it is not an internal cmd command or batch file then
it is a program and will run as either a windowed application
or a console application.

另一种方法是让命令处理器执行命令,然后退出。您可以使用 /c 选项:

  system("cmd.exe /c dir");

或者更简单,因为 system() 自动将作业传递给命令处理器:

  system("dir");

停止使用 start :)