freecom:
你怎么保证自己进程不被杀死呢?
查杀进程(NT/2000适用):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ExtCtrls, StdCtrls, tlhelp32;
type
TForm1 = class(TForm)
Button1: TButton;
ListView1: TListView;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
Han: THandle;
Process: PROCESSENTRY32;
ok: boolean;
Rec: TListItem;
i: integer;
begin
ListView1.Items.Clear;
i := 0;
Han := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
Process.dwSize := SizeOf(Process);
ok := Process32First(Han, Process);
while ok do
begin
Rec := ListView1.Items.Add;
Rec.Caption := Process.szExeFile;
Rec.SubItems.Add(IntToStr(Process.th32ProcessID));
i := i + 1;
ok := Process32Next(Han, Process);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Han: THandle;
ProcessID: int64;
ExitCode: DWORD;
i: integer;
begin
for i := 0 to ListView1.Items.Count - 1 do
if listview1.Items.Selected then
begin
ProcessID := StrToInt64(ListView1.Selected.SubItems.Strings[0]);
Han := OpenProcess(PROCESS_TERMINATE, true, ProcessID);
GetExitCodeProcess(Han, ExitCode);
TerminateProcess(Han, ExitCode);
end;
Sleep(100);
Button1.Click;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1Click(sender);
end;
end.