STARTUPINFO用于指定新程序的主視窗特性的一個結構。
PROCESS_INFORMATION在建立程序時相關的資料結構之一,該結構傳回有關新程序及其主線程的資訊。
void CCreateProgressDlg::StartProgress()
{
CString csCommandLine;
char chWindowsDir[MAX_PATH];
char chCommandLine[MAX_PATH];
DWORD dwExitCode;
PROCESS_INFORMATION pi;
STARTUPINFO si;//用于指定新程序的主視窗特性的一個結構
memset(&si, 0, sizeof(si));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOW;//SW_HIDE隐藏視窗
//得到windows目錄
GetWindowsDirectory(chWindowsDir, MAX_PATH);
//啟動“記事本”程式的指令行
csCommandLine = CString(chWindowsDir) + "\\NotePad.exe";
::strcpy(chCommandLine, csCommandLine);
//啟動“記事本”作為子程序
BOOL ret = CreateProcess(NULL, chCommandLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
if (ret)
{
//關閉子程序的主線程句柄
CloseHandle(pi.hThread);
//等待子程序的退出
WaitForSingleObject(pi.hProcess, INFINITE);
//擷取子程序的退出碼
GetExitCodeProcess(pi.hProcess, &dwExitCode);
//關閉子程序句柄
CloseHandle(pi.hProcess);
}
}