Subversion Repositories simple_log_event

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. library ViaThinkSoftSimpleLogEvent;
  2.  
  3. uses
  4.   ComServ,
  5.   Registry,
  6.   Vcl.Dialogs,
  7.   Windows,
  8.   SysUtils,
  9.   ViaThinkSoftSimpleLogEvent_TLB in 'ViaThinkSoftSimpleLogEvent_TLB.pas',
  10.   ViaThinkSoftSimpleLogEvent_Impl in 'ViaThinkSoftSimpleLogEvent_Impl.pas' {ViaThinkSoftSimpleEventLog: CoClass};
  11.  
  12. {$R *.TLB}
  13.  
  14. {$R *.RES}
  15.  
  16. {$R '..\MessageTable\EventlogMessages.RES'}
  17.  
  18. function GetOwnDllPath: string;
  19. var
  20.   reg: TRegistry;
  21.   regKey: string;
  22. begin
  23.   result := '';
  24.   reg := TRegistry.Create;
  25.   try
  26.     reg.RootKey := HKEY_CLASSES_ROOT;
  27.     {$IFDEF WIN64}
  28.     regKey := 'TypeLib\'+GuidToString(LIBID_ViaThinkSoftSimpleLogEvent)+'\1.0\0\win64';
  29.     {$ELSE}
  30.     regKey := 'TypeLib\'+GuidToString(LIBID_ViaThinkSoftSimpleLogEvent)+'\1.0\0\win32';
  31.     {$ENDIF}
  32.     if reg.OpenKeyReadOnly(regKey) then
  33.     begin
  34.       result := reg.ReadString('');
  35.       reg.CloseKey;
  36.     end;
  37.   finally
  38.     reg.Free;
  39.   end;
  40. end;
  41.  
  42. procedure RegisterEventLogProviderIfRequired;
  43. var
  44.   reg: TRegistry;
  45. begin
  46.   reg := TRegistry.Create;
  47.   try
  48.     reg.RootKey := HKEY_LOCAL_MACHINE;
  49.     if not reg.OpenKey('SYSTEM\CurrentControlSet\Services\Eventlog\Application\'+LOGEVENT_PROVIDER_NAME, true) then
  50.     begin
  51.       ShowMessage('Cannot register EventLog provider! Please run the application as administrator');
  52.     end
  53.     else
  54.     begin
  55.       reg.WriteInteger('CategoryCount', 0);
  56.       reg.WriteInteger('TypesSupported', 7);
  57.       reg.WriteString('EventMessageFile', GetOwnDllPath);
  58.       reg.WriteString('CategoryMessageFile', GetOwnDllPath);
  59.       reg.CloseKey;
  60.     end;
  61.   finally
  62.     reg.Free;
  63.   end;
  64. end;
  65.  
  66. function DllRegisterServer: HResult;
  67. begin
  68.   result := ComServ.DllRegisterServer;
  69.   RegisterEventLogProviderIfRequired;
  70. end;
  71.  
  72. exports
  73.   DllGetClassObject,
  74.   DllCanUnloadNow,
  75.   DllRegisterServer,
  76.   DllUnregisterServer;
  77.  
  78. begin
  79. end.
  80.