線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2762
推到 Plurk!
推到 Facebook!

CreateProcess 和 CloseHandle 如何使用

答題得分者是:taishyang
wangccw
一般會員


發表:16
回覆:32
積分:14
註冊:2005-01-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-04-08 09:05:47 IP:210.69.xxx.xxx 訂閱
要執行一個外部程式,想要射後不理(即執行後不管有沒有成功,皆繼續下一行),這樣我就有一個疑問。


[code delphi]
procedure dgCreateProcess(const FileName: string);
var ProcInfo: TProcessInformation;
    StartInfo: TStartupInfo;
begin
     FillMemory(@StartInfo, sizeof(StartInfo), 0);
     StartInfo.cb := sizeof(StartInfo);
     CreateProcess(
                   nil,
                   PChar(FileName),
                   nil, Nil, False,
                   NORMAL_PRIORITY_CLASS,
                   nil, nil,
                   StartInfo,
                   ProcInfo);
     CloseHandle(ProcInfo.hProcess);
     CloseHandle(ProcInfo.hThread);
end;

[/code]

上面函式是我從網路找到的範例先用 CreateProcess 之後就立即呼叫 CloseHandle ,我的疑問是,我的那個外部程式雖然是射後不理,但我並不確定
那個外部程式是否已經執行完畢就直接呼叫 CloseHandle ,這樣不會有問題嗎?
taishyang
站務副站長


發表:377
回覆:5485
積分:4552
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-04-08 10:31:06 IP:122.116.xxx.xxx 訂閱
WaitForSingleObject
wangccw
一般會員


發表:16
回覆:32
積分:14
註冊:2005-01-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-04-08 11:39:23 IP:210.69.xxx.xxx 訂閱
抱歉,我的本意就是要執行外部程式後,就不管外部程式了,所以不去呼叫WaitForSingleObject。

CreateProcess 後是否一定要呼叫 CloseHandle ?
taishyang
站務副站長


發表:377
回覆:5485
積分:4552
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-04-08 12:03:51 IP:122.116.xxx.xxx 訂閱
If you don't care what happens to the created application, nor what
happens to it, you can close both the process handle and the thread
handle immediately after calling CreateProcess().

編輯記錄
taishyang 重新編輯於 2010-04-08 12:19:02, 註解 無‧
wangccw
一般會員


發表:16
回覆:32
積分:14
註冊:2005-01-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-04-08 13:05:20 IP:210.69.xxx.xxx 訂閱
謝謝,知道了。createPreccess 後直接呼叫 closeHandle是 OK滴。
系統時間:2017-10-21 22:03:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!