控制台提示窗口出现在系统上(“start dir”)但不出现在系统上(“start ipconfig”)

时间:2015-07-01 13:14:45

标签: c++ windows mfc visual-c++-2010

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

但之前,我尝试使用system("start dir");之类的内容来查看按钮是否有效。

问题在于:当我点击左侧按钮时,Windows控制台出现并且不退出单元我关闭它。但这仅适用于system("start dir");。如果我将 dir 更改为 ipconfig (或其他调用函数),则Windows控制台将显示一秒钟并退出。我试过像system("PAUSE");getch();之类的东西,但它不起作用。

为什么此命令适用于 dir ,但不适用于其他命令?

Code UI

1 个答案:

答案 0 :(得分:2)

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:)