Autor Beitrag
lukkee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Mi 13.08.08 22:02 
Hallo
Ich hab gelesen das man mittels WMI abfagen kann ob ein prozess gestartet oder beendet wurde.

Also ich will praktisch überwachen ob ein neuer Prozess gestartet wurde> dannach sollte mein programm eine message ausgeben "soll dieser prozess "prozess.exe" gestartet werden".

Ich hab im forum ein gutes hook beispiel gefunden aber ich will es ohne hooks machen!

In einem anderen Forum hab ich ein Beispiel gefunden das mit WMI läuft jedoch funktioniert das nicht.

hier der code:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
type 
  TForm1 = class(TForm) 
    procedure FormCreate(Sender: TObject); 
  private 
    { Private declarations } 
  public 
    { Public declarations } 
    aSink     : TSWbemSink; 
    aLocator  : TSWbemLocator; 
    aServices : SWbemServices; 
    procedure ProcessCreated(Sender: TObject; var objWbemObject, objWbemAsyncContext: OleVariant); 
  end



procedure TForm1.FormCreate(Sender: TObject); 
begin 
  aLocator := TSWbemLocator.Create(Self); 
  aServices := aLocator.ConnectServer('''root\cimv2'''''''''0nil); // connect to the local computer 

  aSink := TSWbemSink.Create(Self); // sink-objects are used for asynchronous method-calls 
  aSink.OnObjectReady := ProcessCreated; 

  aServices.ExecNotificationQueryAsync(aSink.DefaultInterface, 
      'SELECT * FROM __InstanceCreationEvent within 0.1 WHERE TargetInstance ISA "Win32_Process"'
      'WQL'0nilnil); // every creation of a Win32_Proces-Object should be notified 
end

procedure TForm1.ProcessCreated(Sender: TObject; var objWbemObject, objWbemAsyncContext: OleVariant); 
begin 
  ShowMessage('ProcessCreated'); 
end;


Wie schon erwähnt habe ich die WMI Scriping libary schon eingebunden!!

Der fehler kommt aber in dieser Zeile
ausblenden Delphi-Quelltext
1:
  aSink.OnObjectReady := ProcessCreated;					


[Fehler] mainfrm.pas(43): Inkompatible Typen: 'Liste der Parameter ist unterschiedlich'


Wie gehört die ObjectReady richtig definiert ?
Hab schon so vieles probiert :( bin schon fast am verzweifeln :(


hat jemand ne idee?


greetz
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 13.08.08 23:02 
Hier ist was Brauchbares:

WMIEvents
derentwickler.de/itr...low41af302335b2f.zip
Einloggen, um Attachments anzusehen!