根据进程名,查找并结束进程
2014-10-18 14:13
453 查看
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.
相关文章推荐
- 根据进程名,查找并结束进程
- 根据端口号查找相应PID,从而在任务管理器中结束或查看相应进程
- 根据port端口号查找process进程(服务)或者根据服务名字查找端口号
- Linux 根据进程名查找进程ID
- 根据port端口号查找process进程(服务)或者根据服务名字查找端口号
- linux下根据进程查找文件启动文件
- C#程序中:如何启用进程、结束进程、查找进程
- linux 根据端口查找进程号
- QNX下根据进程名查找PID
- linux根据进程号PID查找启动程序的全路径
- Linux 根据端口查找进程
- linux下根据进程号结束该进程
- linux根据端口查找进程【原创】
- delphi查找和结束进程
- 结束进程(根据可执行文件名)
- 根据进程名结束一个进程
- AIX如何根据监听端口(Listening Port)查找进程号(PID)
- 根据port端口号查找process进程(服务)或者根据服务名字查找端口号
- java基础代码----根据日期字符串 查找对应的周期的起始位置和结束位置
- SQL查死锁进程,并结束死锁进程ID,如结束不掉可能是正被使用或占用,查找原因再Kill