請問如何獲得應用程序的PID |
尚未結案
|
blck
一般會員 發表:17 回覆:19 積分:12 註冊:2003-08-02 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 假如我運行了一個叫project.exe的應用程序,那麽我在關閉牠的時候如果出現異常,管不掉的話,我就強行結束這個應用程序並且把這個進程給kill了,請問如何實現? 謝謝 blck 你好: (1)可利用 Win32 API CreateProcess 執行外部 Application (2)如果關不掉的話,可以用 Win32 API TerminateProcess 把它關掉 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=39031 (3)如何偵測外部 Application 已經無回應,請參考以下的連結文章 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30344備註: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocess.asp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/terminateprocess.asp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/messagesandmessagequeuesreference/messagesandmessagequeuesfunctions/sendmessagetimeout.asp -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/10/27 00:24:14
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
fangback
初階會員 發表:4 回覆:47 積分:40 註冊:2002-06-15 發送簡訊給我 |
看看是否是合你用的
void KillSelectedProcess(DWORD PID) { HANDLE PH; Cardinal hProcess; DWORD lpExistCode; hProcess = __int64(PID); PH = OpenProcess(PROCESS_ALL_ACCESS, FALSE, hProcess); if(PH!=NULL) { ::TerminateProcess(PH, lpExistCode); if(GetWindowThreadProcessId(PH, &lpExistCode)) { ShowMessage(String().sprintf("Kill curent process HWND d",PH)); ::TerminateProcess(PH, lpExistCode); } } CloseHandle(PH); } |
blck
一般會員 發表:17 回覆:19 積分:12 註冊:2003-08-02 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 十分感謝兩位的解答,但是我仍然有一個疑問:怎麽獲得那個PID阿,也許我沒有説明,假設我運行的就是這個project.exe。我一運行就是這個應用,關閉的時候加一個判斷,如果沒有響應就執行強行關閉的動作。blck 你好: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=39031 在這個連結裡面,CreateProcess 如果成功的話,在它的第 9 個參數 pi 裡面 就可以得到對應的 Process Handle (pi.hProcess),最後就可以利用這個 Handle 強制把 Application 關閉 (配合 TerminateProcess),因此應該是不需 要另外獲得 Process ID (PID),如果你真想獲得 PID 的話,在第 9 個參數 pi 裡面也有,就是 pi.dwProcessId -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
blck
一般會員 發表:17 回覆:19 積分:12 註冊:2003-08-02 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
|
blck
一般會員 發表:17 回覆:19 積分:12 註冊:2003-08-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |