1.可靠方法是找到那个进程,然后cut掉。 可以使用这几个函数CreateToolHelp32Snapshot,Process32First,Process32Next查到该进程的ID号,再用这个函数OpenProcess和GetExitCodeProcess得到该进程的退出代码,然后再用 TerminateProcess函数关闭这个进程。例子:关闭IEXPLORER.EXE.procedure TForm1.Button1Click(Sender: TObject); var ProcListhandle,CloseHandle:Thandle; ProcessStruct:TPROCESSENTRY32; Get:Boolean; ExitCode:Cardinal; begin ProcListhandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); ProcessStruct.dwSize:=Sizeof(ProcessStruct); Get:=Process32First(ProcListhandle,ProcessStruct); ListBox1.Clear; while Get do begin ListBox1.Items.Add(ProcessStruct.szExeFile); IF (Extractfilename(ProcessStruct.szExeFile)='IEXPLORE.EXE')and(CloseIE=True) then begin CloseHandle:=OpenProcess(PROCESS_ALL_ACCESS,True,ProcessStruct.th32ProcessID); GetExitCodeProcess(CloseHandle,ExitCode); If TerminateProcess(CloseHandle,ExitCode) then begin showmessage('Closed'); end; end; Get:=Process32Next(ProcListhandle,ProcessStruct); end; end;2.如果那个程序只有一个主窗口的话,也可以用FindWindow函数找到这个窗口的句柄,再用PostMessage函数给它发关闭的消息,就可以了。var HWndCalculator:THandle; begin HWndCalculator := FindWindow(nil,'记事本'); if HWndCalculator <> 0 then begin PostMessage(HWndCalculator,WM_CLOSE,0,0); end;end;
http://www.csdn.net/expert/topic/69/69297.shtm
Delphi代码:
http://www.csdn.net/expert/Topic/70/70670.shtm
可以使用这几个函数CreateToolHelp32Snapshot,Process32First,Process32Next查到该进程的ID号,再用这个函数OpenProcess和GetExitCodeProcess得到该进程的退出代码,然后再用
TerminateProcess函数关闭这个进程。例子:关闭IEXPLORER.EXE.procedure TForm1.Button1Click(Sender: TObject);
var
ProcListhandle,CloseHandle:Thandle;
ProcessStruct:TPROCESSENTRY32;
Get:Boolean;
ExitCode:Cardinal;
begin
ProcListhandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
ProcessStruct.dwSize:=Sizeof(ProcessStruct);
Get:=Process32First(ProcListhandle,ProcessStruct);
ListBox1.Clear;
while Get do
begin
ListBox1.Items.Add(ProcessStruct.szExeFile);
IF (Extractfilename(ProcessStruct.szExeFile)='IEXPLORE.EXE')and(CloseIE=True) then
begin
CloseHandle:=OpenProcess(PROCESS_ALL_ACCESS,True,ProcessStruct.th32ProcessID);
GetExitCodeProcess(CloseHandle,ExitCode);
If TerminateProcess(CloseHandle,ExitCode) then
begin
showmessage('Closed');
end;
end;
Get:=Process32Next(ProcListhandle,ProcessStruct); end;
end;2.如果那个程序只有一个主窗口的话,也可以用FindWindow函数找到这个窗口的句柄,再用PostMessage函数给它发关闭的消息,就可以了。var
HWndCalculator:THandle;
begin
HWndCalculator := FindWindow(nil,'记事本');
if HWndCalculator <> 0 then
begin
PostMessage(HWndCalculator,WM_CLOSE,0,0);
end;end;