S simonlyr Unregistered / Unconfirmed GUEST, unregistred user! 2005-02-05 #1 我想在一个程序结束时,结束与之相关的另外一个程序。怎么实现呢?急!希望在delphi中给出简单的实现代码,测试通过后即给分。
S simonlyr Unregistered / Unconfirmed GUEST, unregistred user! 2005-02-05 #2 我想在一个程序结束时,结束与之相关的另外一个程序。怎么实现呢?急!希望在delphi中给出简单的实现代码,测试通过后即给分。
M missinwind Unregistered / Unconfirmed GUEST, unregistred user! 2005-02-05 #3 可以在线程1的Terminate事件或Destroy事件中结束线程2,一句就行了:<br>Thread2.Terminate;
S simonlyr Unregistered / Unconfirmed GUEST, unregistred user! 2005-02-05 #4 不是线程。是两个独立的进程。一个进程结束后我要结束另外一个于之相关的进程
R robinhanhui Unregistered / Unconfirmed GUEST, unregistred user! 2005-02-05 #5 给你一个例子,把这段代码写导你的程序结束代码中<br>var<br>HWndCalculator : HWnd;<br>begin<br>// 得到计算器的句柄<br>HWndCalculator :=FindWindow(nil, '计算器');<br>//如果句柄存在,关闭计算器<br>if HWndCalculator &lt;&gt; 0 then<br>SendMessage(HWndCalculator, WM_CLOSE, 0, 0);<br>end;
给你一个例子,把这段代码写导你的程序结束代码中<br>var<br>HWndCalculator : HWnd;<br>begin<br>// 得到计算器的句柄<br>HWndCalculator :=FindWindow(nil, '计算器');<br>//如果句柄存在,关闭计算器<br>if HWndCalculator &lt;&gt; 0 then<br>SendMessage(HWndCalculator, WM_CLOSE, 0, 0);<br>end;
S simonlyr Unregistered / Unconfirmed GUEST, unregistred user! 2005-02-05 #6 to robinhanhui:<br> 万一标题是动态改变的情况呢?怎么可以简单的实现?
七 七月 Unregistered / Unconfirmed GUEST, unregistred user! 2005-02-05 #7 很简单,在CLOSE事件里直接列举你要关闭的进程在不在,在就关闭。<br>代码我调试通过了的<br><br>var<br> PID WORD;<br> SmW :string;<br> BRet :Boolean;<br> tmp :string;<br> SnapshotHandle :THandle;<br> PE32 :TProcessEntry32;<br> Hmb :HWND;<br>begin<br> SmW := lowercase('{需要结束的进程名}');<br> SnapshotHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);<br> PE32.dwSize := SizeOf(PE32);<br> BRet:=Process32First(SnapshotHandle, PE32);<br> while Integer(BRet) &lt;&gt; 0 do<br> begin<br> tmp:=lowercase(PE32.szExeFile);<br> if pos(SmW,tmp)&gt;0 then<br> begin<br> PID := PE32.th32ProcessID;<br> Hmb:= OpenProcess(PROCESS_ALL_ACCESS, True,PID);<br> TerminateProcess(Hmb,0);<br> end;<br> BRet:=Process32Next(SnapshotHandle,PE32);<br> end;<br>
很简单,在CLOSE事件里直接列举你要关闭的进程在不在,在就关闭。<br>代码我调试通过了的<br><br>var<br> PID WORD;<br> SmW :string;<br> BRet :Boolean;<br> tmp :string;<br> SnapshotHandle :THandle;<br> PE32 :TProcessEntry32;<br> Hmb :HWND;<br>begin<br> SmW := lowercase('{需要结束的进程名}');<br> SnapshotHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);<br> PE32.dwSize := SizeOf(PE32);<br> BRet:=Process32First(SnapshotHandle, PE32);<br> while Integer(BRet) &lt;&gt; 0 do<br> begin<br> tmp:=lowercase(PE32.szExeFile);<br> if pos(SmW,tmp)&gt;0 then<br> begin<br> PID := PE32.th32ProcessID;<br> Hmb:= OpenProcess(PROCESS_ALL_ACCESS, True,PID);<br> TerminateProcess(Hmb,0);<br> end;<br> BRet:=Process32Next(SnapshotHandle,PE32);<br> end;<br>
A abookdog Unregistered / Unconfirmed GUEST, unregistred user! 2005-02-05 #8 窗口是动态的,但其文件路径是固定的<br>可查其路径