控制台提示 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 :)
我尝试创建一个简单的 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 :)