如何执行一个命令行程序,而不出现DOS窗口?

时间:2022-06-01 17:55:56
同上,如果要在命令行程序中设置,又应该怎样写呢?
谢谢。

23 个解决方案

#1


WInExec("c:\\command.com  /c  dir >dir.txt",SW_HIDE);

#2


c:\\command.com的具体名称与OS有关,要通过环境变量取得

#3


UP

#4


#5


重定向! cmd > output.txt

#6


最简单办法,建一个批处理文件。
在里面调用你的命令行程序,前面加上一个@

#7


看我写的:
String sFileName;
sFileName="H:\\nsds_bat\\invgent.bat" ;
ShellExecute(NULL, "Open", sFileName.c_str(), NULL, NULL, SW_HIDE);

#8


PROCESS_INFORMATION pf;
STARTUPINFO sf;
sf.wShowWindow=SW_HIDE;
sf.dwFLAg=STARTF_USESHOWWINDOW;

CreateProcess(NULL,"xxxxxxxxx",NULL,NULL,false,NULL,NULL,NUll.&sf,&pf);

在bcb5中通过,dos程序只在后台运行,不显示出dos窗口 


给分吧

#9


同意楼上所有。注意SW_HIDE

#10


正是,用创建进程,CreateProcess 并且我还有个建议,再加上通道,这样可以将DOS下的输出接管过来,显示在Windows下。以前我做过ARJ的Windows外壳。正是如此。

#11


“通道法”和“输出到文件法”我的资料中有,觉得不好用。
我没有输出,又不懂“通道”(虽然我在“通道侗族自治县”)
CreateProcess 如果可行,倒是很不错哦!

#12


通道侗族自治县
哪省?顺便充实一下地理知识

#13


如果上面的可行,我就给上面的加分。
我去试试,下午帮人看机子去了

#14


ShellExecute(this->Handle,"open","command","/c dir c:\\*.*>d:\\bbb.txt","d:",SW_HIDE);

#15


TO sprewellkobe(我为软件狂!) 
sf.dwFLAg=STARTF_USESHOWWINDOW; 无法通过!
[C++ Error] Unit1.cpp(43): E2316 'dwFLAg' is not a member of '_STARTUPINFOA'
是不写错了!
我只有BCB6

#16


通过了,是dwFLAg 和dwFlag的不同!
以后大小写一定要注意啊!

#17


我也学一学

#18


呵呵,我随手写的,还望见谅呀

给分吧,兄弟

#19


sf.dwFlags=STARTF_USESHOWWINDOW;
         .
你们看这句又有什么不同??

#20


什么意思?问题不解决了吗?

#21


奇怪?
我明明结帖了呀?!
sprewellkobe(我为软件狂!) ,你的代码有问题!你看看上面,这可是API的问题,不会错的。

#22


哦,有的参数副职我没写全,懒的写了

大部分都副的是NULL,sf的

你看一下MSDN

#23


dwFlag和dwFlags怎么一样?

#1


WInExec("c:\\command.com  /c  dir >dir.txt",SW_HIDE);

#2


c:\\command.com的具体名称与OS有关,要通过环境变量取得

#3


UP

#4


#5


重定向! cmd > output.txt

#6


最简单办法,建一个批处理文件。
在里面调用你的命令行程序,前面加上一个@

#7


看我写的:
String sFileName;
sFileName="H:\\nsds_bat\\invgent.bat" ;
ShellExecute(NULL, "Open", sFileName.c_str(), NULL, NULL, SW_HIDE);

#8


PROCESS_INFORMATION pf;
STARTUPINFO sf;
sf.wShowWindow=SW_HIDE;
sf.dwFLAg=STARTF_USESHOWWINDOW;

CreateProcess(NULL,"xxxxxxxxx",NULL,NULL,false,NULL,NULL,NUll.&sf,&pf);

在bcb5中通过,dos程序只在后台运行,不显示出dos窗口 


给分吧

#9


同意楼上所有。注意SW_HIDE

#10


正是,用创建进程,CreateProcess 并且我还有个建议,再加上通道,这样可以将DOS下的输出接管过来,显示在Windows下。以前我做过ARJ的Windows外壳。正是如此。

#11


“通道法”和“输出到文件法”我的资料中有,觉得不好用。
我没有输出,又不懂“通道”(虽然我在“通道侗族自治县”)
CreateProcess 如果可行,倒是很不错哦!

#12


通道侗族自治县
哪省?顺便充实一下地理知识

#13


如果上面的可行,我就给上面的加分。
我去试试,下午帮人看机子去了

#14


ShellExecute(this->Handle,"open","command","/c dir c:\\*.*>d:\\bbb.txt","d:",SW_HIDE);

#15


TO sprewellkobe(我为软件狂!) 
sf.dwFLAg=STARTF_USESHOWWINDOW; 无法通过!
[C++ Error] Unit1.cpp(43): E2316 'dwFLAg' is not a member of '_STARTUPINFOA'
是不写错了!
我只有BCB6

#16


通过了,是dwFLAg 和dwFlag的不同!
以后大小写一定要注意啊!

#17


我也学一学

#18


呵呵,我随手写的,还望见谅呀

给分吧,兄弟

#19


sf.dwFlags=STARTF_USESHOWWINDOW;
         .
你们看这句又有什么不同??

#20


什么意思?问题不解决了吗?

#21


奇怪?
我明明结帖了呀?!
sprewellkobe(我为软件狂!) ,你的代码有问题!你看看上面,这可是API的问题,不会错的。

#22


哦,有的参数副职我没写全,懒的写了

大部分都副的是NULL,sf的

你看一下MSDN

#23


dwFlag和dwFlags怎么一样?