根据进程名,查找并结束进程
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Tlhelp32; type TForm1 = class(TForm) ListBox1: TListBox; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} Function FindProcess(ProcessName: String): Boolean; var Snap: THandle; Lp: Boolean; PE: TProcessEntry32; begin Result := False; snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if snap <= 0 then begin Exit; end; PE.dwSize := SizeOf(TProcessEntry32); Lp := Process32First(snap,PE); while Lp do begin if PE.szExeFile = ProcessName then begin Result := True; Break; end; Lp := Process32Next(snap,PE); end; CloseHandle(snap); end; //函数 function KillProcess(ProcessName: string): Boolean; const PROCESS_TERMINATE = $0001; var Snap: THandle;//存放CreateToolhelp32Snapshot() PE: TProcessEntry32;//存放PROCESSENTRY32结构 Lp: Boolean;//存放Process32First()、Process32Next() Op: THandle;//存放OpenProcess() begin Result := False; snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//获得进程快照 if snap <= 0 then begin Exit; end; PE.dwSize := SizeOf(TProcessEntry32);//为dwSize赋值 Lp := Process32First(snap,PE);//枚举当前的进程 while Lp do begin if PE.szExeFile = ProcessName then//进程名与szExeFile比较 begin Op := OpenProcess(PROCESS_TERMINATE,False,PE.th32ProcessID);//打开句柄 Result := TerminateProcess(Op,0);//结束进程 end; Lp := Process32Next(snap,PE);//枚举当前的进程 end; CloseHandle(snap);//关闭句柄 end; procedure TForm1.FormCreate(Sender: TObject); begin ListBox1.Items.Add(‘程序开始运行‘); if FindProcess(‘notepad.exe‘) then begin ListBox1.Items.Add(‘发现进程notepad.exe‘); if KillProcess(‘notepad.exe‘) then begin ListBox1.Items.Add(‘结束进程notepad.exe成功‘); end else begin ListBox1.Items.Add(‘结束进程notepad.exe失败‘); end; end else begin ListBox1.Items.Add(‘未发现进程notepad.exe‘); end; end; end.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。