各位,帮我看看我的代码为什么不能将创建的进程窗口隐藏???
我要创建一个进程,并将进程的窗口隐藏,执行完子进程后,在继续执行主进程。
我的两个测试代码如下,都不能隐藏窗口,其他部分正常。为什么????
一、使用ShellExecuteEx
SHELLEXECUTEINFO ShExecInfo ;
ZeroMemory(&ShExecInfo,sizeof(SHELLEXECUTEINFO));
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = "";
ShExecInfo.lpFile = "c:\\run.exe";
ShExecInfo.lpParameters = "";
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_HIDE;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
二、使用CreateProcess
CString lpApplicationName="c:\\demo.exe";
//进程执行的应用程序的完全路径名
STARTUPINFO StartupInfo;//创建进程所需的信息结构变量
GetStartupInfo(&StartupInfo);
StartupInfo.lpReserved=NULL;
StartupInfo.lpDesktop=NULL;
StartupInfo.lpTitle=NULL;
StartupInfo.dwX=0;
StartupInfo.dwY=0;
StartupInfo.dwXSize=200;
StartupInfo.dwYSize=300;
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(lpApplicationName,NULL,NULL,NULL,TRUE,0,NULL,NULL,&StartupInfo,&piProcess);
if(bRet)
CloseHandle(piProcess.hThread);
WaitForSingleObject(piProcess.hProcess,INFINITE);
CloseHandle(piProcess.hProcess);