GetExitCodeProcess的ExitCode一直是0 |
尚未結案
|
alvinken
初階會員 發表:21 回覆:32 積分:45 註冊:2008-06-09 發送簡訊給我 |
[code cpp] DWORD ExitCode; SHELLEXECUTEINFO ExecInfo; ZeroMemory(&ExecInfo,sizeof(ExecInfo)); ExecInfo.cbSize = sizeof(ExecInfo); ExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; ExecInfo.lpVerb = "open"; ExecInfo.lpFile = CPath.c_str(); ExecInfo.hwnd = this->Handle; ExecInfo.nShow = SW_SHOWNORMAL; ShellExecuteEx(&ExecInfo); GetExitCodeProcess(ExecInfo.hProcess,&ExitCode); while (ExitCode == STILL_ACTIVE) { GetExitCodeProcess(ExecInfo.hProcess,&ExitCode); Application->ProcessMessages(); } WinExec(MPath.c_str(),NULL); [/code] 這是我用別人的deiphi程式改成BCB 但是不會執行到迴圈 ExitCode一開始的值就是0 程式都有順利執行 GetExitCodeProcess的值也都是 true 我後來有測試其他的外部程式是ok的 唯讀測試我要用的安裝程式不行 我是要寫能將好幾個安裝程式一個一個安裝起來
------
水至清則無魚,人至賤則無敵。 |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
改用 Win32 API CreateProcess 應該比較合適,你用關鍵字「CreateProcess」在本站搜尋,就可以找到相關的範例程式碼,例如:
http://delphi.ktop.com.tw/board.php?cid=168&fid=914&tid=71374
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
|
alvinken
初階會員 發表:21 回覆:32 積分:45 註冊:2008-06-09 發送簡訊給我 |
|
wjhsu
初階會員 發表:9 回覆:32 積分:48 註冊:2004-06-13 發送簡訊給我 |
下面的程式, 是我現在用的, 可以等到程式結束才離開迴圈,
不知道你是否適用.... [code cpp] STARTUPINFO StartInfo; StartInfo.cb = sizeof(STARTUPINFO); StartInfo.lpReserved = NULL; StartInfo.lpDesktop = NULL; StartInfo.lpTitle = NULL; StartInfo.dwX = 0; StartInfo.dwY = 0; StartInfo.dwXSize = 0; StartInfo.dwYSize = 0; StartInfo.dwXCountChars = 0 ; StartInfo.dwYCountChars = 0 ; StartInfo.dwFillAttribute = 0 ; StartInfo.dwFlags = STARTF_FORCEONFEEDBACK|STARTF_FORCEOFFFEEDBACK; StartInfo.wShowWindow = 0; StartInfo.cbReserved2 = 0; StartInfo.lpReserved2 = NULL; StartInfo.hStdInput = 0; StartInfo.hStdOutput = 0; StartInfo.hStdError = 0; PROCESS_INFORMATION ProcInfo; DWORD ExitCode; if (!CreateProcess( ExecFileName.c_str(), // pointer to name of executable module CmdLine.c_str(), // pointer to command line string NULL, // pointer to process security attributes NULL, // pointer to thread security attributes FALSE, // handle inheritance flag CREATE_DEFAULT_ERROR_MODE,// creation flags NULL, // pointer to new environment block NULL, // pointer to current directory name &StartInfo, // pointer to STARTUPINFO &ProcInfo) // pointer to PROCESS_INFORMATION ) { MyMsg("Can't execute the parameter setting program"); return false; } do { if (!GetExitCodeProcess(ProcInfo.hProcess,&ExitCode)) return false; Application->ProcessMessages(); } while(ExitCode == STILL_ACTIVE); CloseHandle(ProcInfo.hProcess); if (ExitCode > 2) return false; //設定失敗 return true; [/code] |
alvinken
初階會員 發表:21 回覆:32 積分:45 註冊:2008-06-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |