CreateProcess执行一个控制台程序,隐藏DOS窗口

时间:2022-09-02 22:04:31

STARTUPINFO   StartupInfo;//创建进程所需的信息结构变量   
GetStartupInfo(&StartupInfo);   
StartupInfo.lpReserved=NULL;   
StartupInfo.lpDesktop=NULL;   
StartupInfo.lpTitle=NULL;   
StartupInfo.dwX=0;   
StartupInfo.dwY=0;   
StartupInfo.dwXSize=0;   
StartupInfo.dwYSize=0;   
StartupInfo.dwXCountChars=500;   
StartupInfo.dwYCountChars=500;   
StartupInfo.dwFlags=STARTF_USESHOWWINDOW;   
StartupInfo.wShowWindow=SW_HIDE;   
//说明进程将以隐藏的方式在后台执行   
StartupInfo.cbReserved2=0;   
StartupInfo.lpReserved2=NULL;   
StartupInfo.hStdInput=stdin;   
StartupInfo.hStdOutput=stdout;   
StartupInfo.hStdError=stderr;   
PROCESS_INFORMATION   piProcess;   
BOOL   bRet;   
bRet   =   CreateProcess(modName,NULL,NULL,NULL,TRUE,CREATE_NO_WINDOW ,NULL,NULL,&StartupInfo,&piProcess);  
if(bRet)   
CloseHandle(piProcess.hThread);       
CloseHandle(piProcess.hProcess);
注意其中的StartupInfo.dwFlags=STARTF_USESHOWWINDOW;是必须的,要不然showwindow的参数将无效,详细的MSDN上写得清楚