Ceci est une ancienne révision du document !
Conversion depuis Delphi
Énoncé du problème
Dans mes recherches j'ai trouvé du code Delphi faisant (a peu prés) ce que je cherche a faire.
Et effectivement avec Delphi çà marche, mais avec Lazarus, cela ne fonctionne pas !
Ci dessous nous allons trouver :
- La source originale en Delphi que j'ai trouvé.
Sources Delphi Originales
- Delphi
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, WbemScripting_TLB, Vcl.StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private FSink: TSWbemSink; FLocator: ISWbemLocator; FServices: ISWbemServices; procedure EventReceived(ASender: TObject; const objWbemObject: ISWbemObject; const objWbemAsyncContext: ISWbemNamedValueSet); public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.dfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); const WQL = 'SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA "Win32_Process"'; begin FLocator := CoSWbemLocator.Create; //Connect to the WMI service FServices := FLocator.ConnectServer('.', 'root\cimv2', '','', '', '', wbemConnectFlagUseMaxWait, nil); //create the sink instance FSink := TSWbemSink.Create(self); //assign the event handler FSink.OnObjectReady := EventReceived; //Run the ExecNotificationQueryAsync FServices.ExecNotificationQueryAsync(FSink.DefaultInterface,WQL,'WQL', 0, nil, nil); end; procedure TForm1.EventReceived(ASender: TObject; const objWbemObject: ISWbemObject; const objWbemAsyncContext: ISWbemNamedValueSet); var PropVal: OLEVariant; begin PropVal := objWbemObject; Memo1.Lines.Add(Format('Caption : %s ',[PropVal.TargetInstance.Caption])); Memo1.Lines.Add(Format('ProcessID : %s ',[PropVal.TargetInstance.ProcessID])); end; end.
Source de ce sode : https://theroadtodelphi.com/2011/04/18/delphi-and-wmi-events/
Vous pourriez laisser un commentaire si vous étiez connecté.