home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 April / Chip_2002-04_cd1.bin / zkuste / delphi / kolekce / d56 / NT.ZIP / NTReportEvent.pas < prev    next >
Pascal/Delphi Source File  |  2002-01-14  |  2KB  |  71 lines

  1. unit NTReportEvent;
  2.  
  3. interface
  4.  
  5. uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
  6.  
  7. type
  8.   TNTReportEvent = class(TComponent)
  9.   private
  10.     { Private declarations }
  11.     FApplicationName:String;
  12.     FMessage:String;
  13.     FEventType:WORD;
  14.     FCategory:WORD;
  15.     FEventID:DWORD;
  16.     FUserSID:Integer;
  17.     FServerName:String;
  18.   protected
  19.     { Protected declarations }
  20.   public
  21.     { Public declarations }
  22.   published
  23.     { Published declarations }
  24.     property ApplicationName:String read FApplicationName write FApplicationName;
  25.     property EventMessage:String read FMessage write FMessage;
  26.     property EventType:Word read FEventType write FEventType default 0;
  27.     property Category:Word read FCategory write FCategory default 1;
  28.     property EventID:DWORD read FEventID write FEventID default 0;
  29.     property UserSID:Integer read FUserSID write FUserSID;
  30.     property ServerName:String read FServerName write FServerName;
  31.     function Execute:Boolean;
  32.   end;
  33.  
  34. procedure Register;
  35.  
  36. implementation
  37.  
  38. function TNTReportEvent.Execute:Boolean;
  39. var MyHandle:THandle;
  40.     MyMsg:Array[0..2] Of PChar;
  41. begin
  42.      If ServerName='' Then
  43.      Begin
  44.           MyHandle:=RegisterEventSource(nil,PChar(FApplicationName));
  45.      End Else
  46.      Begin
  47.           MyHandle:=RegisterEventSource(PChar(FServerName),PChar(FApplicationName));
  48.      End;
  49.      If (MyHandle=0) Then
  50.      Begin
  51.           Result:=False;
  52.           Exit;
  53.      End;
  54.  
  55.      MyMsg[0]:=PChar(FMessage);
  56.      If ReportEvent(MyHandle,FEventType,FCategory,FEventID,Pointer(FUserSID),1,0,@MyMsg,nil)=False Then
  57.      Begin
  58.           Result:=False;
  59.           Exit;
  60.      End;
  61.      DeregisterEventSource(MyHandle);
  62.      Result:=True;
  63. End;
  64.  
  65. procedure Register;
  66. begin
  67.   RegisterComponents('NT Tools - EventLog', [TNTReportEvent]);
  68. end;
  69.  
  70. end.
  71.