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

如何將ShellExecute開啟的程式關閉

缺席
aconxu
一般會員


發表:18
回覆:41
積分:11
註冊:2006-12-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-07-21 11:28:20 IP:60.250.xxx.xxx 訂閱
Dear all ,

請問大家~

我知道~

A.exe開啟時,去ShellExecute了 A'.exe

當A關閉時可以用 TerminateProcess(ExecInfo.hProcess, 0);的方法將A'exe也關才

現在~

假設~有A.exe & B.exe 及 A'.exe(A.exe所ShellExecute出來的)

不知道有沒有辦法達到~B.exe關閉時,A'.exe也跟著關閉?
該如何捉取到A'.exe的ExecInfo.hProcess

謝謝
carstyc
資深會員


發表:16
回覆:254
積分:329
註冊:2003-07-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-07-21 13:46:41 IP:203.79.xxx.xxx 訂閱

[code cpp]

EndProcess('A'.exe');


procedure EndProcess(AFileName: string);
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapShotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
FSnapShotHandle := CreateToolhelp32SnapShot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile))=UpperCase(AFileName)) or (UpperCase(FProcessEntry32.szExeFile )=UpperCase(AFileName))) then
TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0),FProcessEntry32.th32ProcessID), 0);
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
end;
[/code]


===================引 用 aconxu 文 章===================
Dear all ,

請問大家~

我知道~

A.exe開啟時,去ShellExecute了 A'.exe

當A關閉時可以用 TerminateProcess(ExecInfo.hProcess, 0);的方法將A'exe也關才

現在~

假設~有A.exe & B.exe 及 A'.exe(A.exe所ShellExecute出來的)

不知道有沒有辦法達到~B.exe關閉時,A'.exe也跟著關閉?
該如何捉取到A'.exe的ExecInfo.hProcess

謝謝

aconxu
一般會員


發表:18
回覆:41
積分:11
註冊:2006-12-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-07-23 11:01:40 IP:60.250.xxx.xxx 訂閱
Dear carstyc,

感謝你的回覆我有在其他版上搜尋到相關的資訊
其中我覺的 http://delphi.ktop.com.tw/board.php?cid=168&fid=913&tid=87254
這一篇說的我比較懂
謝謝~
系統時間:2017-10-18 4:42:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!