uses一下Tlhelp32 function killTask(Exefilename:String):integer; const PROCESS_TERMINATE=$0001; var ContinueLoop:Boolean; FsnapshotHandle:THandle; FProcessEntry32:TProcessEntry32; begin Result:=0; FsnapshotHandle:=CreateToolhelp32SnapShot(Th32cs_snappRocess,0); FProcessEntry32.dwSize:=sizeof(FProcessEntry32); ContinueLoop:=Process32First(FsnapshotHandle,FProcessEntry32); while integer(Continueloop)<> 0 do if ((UpperCase(Extractfilename(FProcessEntry32.szExeFile))=uppercase(exefilename))or (upperCase(FprocessEntry32.szExefile)=UpperCase(Exefilename))) then begin showmessage(''); TerminateProcess(openProcess(Process_TERMINATE,bool(0),FprocessEntry32.th32ProcessID),0); break; end else Continueloop:=Process32Next(FsnapshotHandle,FprocessEntry32); end; end; 把进程名传近来就行了
强制结束进程TerminateProcess(phwnd, 0),返回Boolean值。
结束一个进程 TerminateProcess (ByVal hProcess As Long, ByVal uExitCode As Long) As Long hProcess Long,指定要中断的一个进程的句柄 uExitCode Long,进程的一个退出代码
function killTask(Exefilename:String):integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop:Boolean;
FsnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
begin
Result:=0;
FsnapshotHandle:=CreateToolhelp32SnapShot(Th32cs_snappRocess,0);
FProcessEntry32.dwSize:=sizeof(FProcessEntry32);
ContinueLoop:=Process32First(FsnapshotHandle,FProcessEntry32);
while integer(Continueloop)<> 0 do
if ((UpperCase(Extractfilename(FProcessEntry32.szExeFile))=uppercase(exefilename))or
(upperCase(FprocessEntry32.szExefile)=UpperCase(Exefilename))) then
begin
showmessage('');
TerminateProcess(openProcess(Process_TERMINATE,bool(0),FprocessEntry32.th32ProcessID),0);
break;
end
else
Continueloop:=Process32Next(FsnapshotHandle,FprocessEntry32);
end;
end;
把进程名传近来就行了
TerminateProcess (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
hProcess Long,指定要中断的一个进程的句柄
uExitCode Long,进程的一个退出代码
PostMessage(Wnd,WM_CLOSE,0,0);
example:
QQWnd:=FindWindow(nil,pchar('QQ登陆窗口'));
PostMessage(QQWnd,WM_CLOSE,0,0);
这样QQ就被关了