Subversion Repositories simple_log_event

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 daniel-mar 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.