Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.045 c
15-1163094529
yuraspb
2006-11-09 20:48
2006.12.03
У кого есть исходники по кластерному анализу


15-1163524439
ArtemESC
2006-11-14 20:13
2006.12.03
Как сделать поворотник...


1-1161673278
DelphiLexx
2006-10-24 11:01
2006.12.03
TRegistry - удалить подраздел


15-1163602633
Pazitron_Brain
2006-11-15 17:57
2006.12.03
Как измерить скорость пули?


15-1163665894
Игорь Шевченко
2006-11-16 11:31
2006.12.03
А не подскажет ли кто программу для ведения TODO-списка