Текущий архив: 2006.12.03;
Скачать: CL | DM;
Вниз
Отследить измениение списка запущенных в системе процессов Найти похожие ветки
← →
DelphiN! © (2006-07-19 14:46) [0]Необходимо отследить изменение списка запущенных процессов в системе, может в системе есть событие, которое генерируется при изменении списка процессов(создании\удалении)?
← →
Чапаев © (2006-07-19 15:43) [1]По таймеру отслеживай -- простейший вариант.
← →
Rouse_ © (2006-07-19 16:46) [2]Есть PsSetCreateProcessNotifyRoutine()
← →
Ketmar © (2006-07-19 16:58) [3]в общем случае -- нет такого события.
← →
AbrosimovA © (2006-07-20 10:47) [4]Вот, работающий пример:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, WbemScripting_TLB, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
FServices: ISWbemServices;
FLocator: TSWbemLocator;
FSink1,FSink2 : TSWbemSink;
procedure ProcessCreated(Sender: TObject; var objWbemObject: OleVariant;
var objWbemAsyncContext: OleVariant);
procedure ProcessDeleted(Sender: TObject; var objWbemObject: OleVariant;
var objWbemAsyncContext: OleVariant);
public
{ Public declarations }
end;
const
wbemConnectFlagUseMaxWait = $00000080;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ProcessCreated(Sender: TObject; var objWbemObject: OleVariant;
var objWbemAsyncContext: OleVariant);
begin
Memo1.Lines.Add("Запущен процесс");
end;
procedure TForm1.ProcessDeleted(Sender: TObject; var objWbemObject: OleVariant;
var objWbemAsyncContext: OleVariant);
begin
Memo1.Lines.Add("Процесс остановлен");
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FLocator:=TSWbemLocator.Create(Self);
FServices := FLocator.ConnectServer(".", "root\cimv2", "",
"", "", "", wbemConnectFlagUseMaxWait, nil);
FSink1 := TSWbemSink.Create(self);
FSink1.OnObjectReady := ProcessCreated;
FServices.ExecNotificationQueryAsync(FSink1.DefaultInterface,
"SELECT * FROM __InstanceCreationEvent WITHIN 0.1 WHERE TargetInstance ISA "Win32_Process"", "WQL", 0, nil, nil);
FSink2 := TSWbemSink.Create(self);
FSink2.OnObjectReady := ProcessDeleted;
FServices.ExecNotificationQueryAsync(FSink2.DefaultInterface,
"SELECT * FROM __InstanceDeletionEvent WITHIN 0.1 WHERE TargetInstance ISA "Win32_Process"", "WQL", 0, nil, nil);
end;
end.
Страницы: 1 вся ветка
Текущий архив: 2006.12.03;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.034 c