delphi杀进程的两种方式

delphi杀进程的两种方式

uint

unit Tlhelp32;

第一种:比较简单,根据标题,找到窗口,再找到进程,杀死进程

procedure KillProgram(WindowTitle : string);

const

PROCESS_TERMINATE = $0001;

var

ProcessHandle : THandle;

ProcessID: Integer;

TheWindow : HWND;

begin

TheWindow := FindWindow(nil, PChar(WindowTitle));

GetWindowThreadProcessID(TheWindow, @ProcessID);

ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);

TerminateProcess(ProcessHandle,4);

end;

第二种:复杂一点,不过可获取的信息更多,其他功能的时候可以参考一下

function KillTask(ExeFileName: string): integer;

const

PROCESS_TERMINATE=$0001;

var

ContinueLoop: BOOL;

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

begin

if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =

UpperCase(ExeFileName))

or (UpperCase(FProcessEntry32.szExeFile) =

UpperCase(ExeFileName))) then

Result := Integer(TerminateProcess(OpenProcess(

PROCESS_TERMINATE, BOOL(0),

FProcessEntry32.th32ProcessID), 0));

ContinueLoop := Process32Next(FSnapshotHandle,

FProcessEntry32);

end;

CloseHandle(FSnapshotHandle);

end;