Subversion Repositories simple_log_event

Rev

Rev 2 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 3
Line 1... Line 1...
1
library ViaThinkSoftSimpleLogEvent;
1
library ViaThinkSoftSimpleLogEvent;
2
 
2
 
3
uses
3
uses
4
  ComServ,
4
  ComServ,
5
  Registry,
-
 
6
  Vcl.Dialogs,
-
 
7
  Windows,
-
 
8
  SysUtils,
-
 
9
  ViaThinkSoftSimpleLogEvent_TLB in 'ViaThinkSoftSimpleLogEvent_TLB.pas',
5
  ViaThinkSoftSimpleLogEvent_TLB in 'ViaThinkSoftSimpleLogEvent_TLB.pas',
10
  ViaThinkSoftSimpleLogEvent_Impl in 'ViaThinkSoftSimpleLogEvent_Impl.pas' {ViaThinkSoftSimpleEventLog: CoClass};
6
  ViaThinkSoftSimpleLogEvent_Impl in 'ViaThinkSoftSimpleLogEvent_Impl.pas' {ViaThinkSoftSimpleEventLog: CoClass};
11
 
7
 
12
{$R *.TLB}
8
{$R *.TLB}
13
 
9
 
14
{$R *.RES}
10
{$R *.RES}
15
 
11
 
16
{$R '..\MessageTable\EventlogMessages.RES'}
12
{$R '..\MessageTable\EventlogMessages.RES'}
17
 
13
 
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
14
exports
73
  DllGetClassObject,
15
  DllGetClassObject,
74
  DllCanUnloadNow,
16
  DllCanUnloadNow,
75
  DllRegisterServer,
17
  DllRegisterServer,
76
  DllUnregisterServer;
18
  DllUnregisterServer;