Rev 3 | Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2 | daniel-mar | 1 | unit ViaThinkSoftSimpleLogEvent_Impl; |
2 | |||
3 | {$WARN SYMBOL_PLATFORM OFF} |
||
4 | |||
5 | interface |
||
6 | |||
7 | uses |
||
8 | ComObj, ActiveX, ViaThinkSoftSimpleLogEvent_TLB, StdVcl; |
||
9 | |||
10 | type |
||
11 | TViaThinkSoftSimpleEventLog = class(TAutoObject, IViaThinkSoftSimpleEventLog) |
||
12 | protected |
||
13 | procedure LogEvent(EventType: Integer; const LogMsg: WideString); safecall; |
||
14 | end; |
||
15 | |||
16 | const |
||
17 | LOGEVENT_PROVIDER_NAME = 'ViaThinkSoft'; |
||
18 | |||
19 | implementation |
||
20 | |||
21 | uses ComServ, Windows; |
||
22 | |||
23 | const |
||
24 | MSG_SUCCESS = $20000000; |
||
25 | MSG_INFORMATIONAL = $60000001; |
||
26 | MSG_WARNING = $A0000002; |
||
27 | MSG_ERROR = $E0000003; |
||
28 | |||
29 | function WriteEventLog(AProvider: string; AEventType: word; AEventId: Cardinal; AEntry: string): boolean; |
||
30 | var |
||
31 | EventLog: integer; |
||
32 | P: Pointer; |
||
33 | begin |
||
34 | Result := False; |
||
35 | P := PChar(AEntry); |
||
36 | EventLog := RegisterEventSource(nil, PChar(AProvider)); |
||
37 | if EventLog <> 0 then |
||
38 | try |
||
39 | ReportEvent(EventLog, // event log handle |
||
40 | AEventType, // event type |
||
41 | 0, // category zero |
||
42 | AEventId, // event identifier |
||
43 | nil, // no user security identifier |
||
44 | 1, // one substitution string |
||
45 | 0, // no data |
||
46 | @P, // pointer to string array |
||
47 | nil); // pointer to data |
||
48 | Result := True; |
||
49 | finally |
||
50 | DeregisterEventSource(EventLog); |
||
51 | end; |
||
52 | end; |
||
53 | |||
54 | procedure TViaThinkSoftSimpleEventLog.LogEvent(EventType: Integer; |
||
55 | const LogMsg: WideString); |
||
56 | begin |
||
57 | case EventType of |
||
58 | 0: |
||
59 | WriteEventLog(LOGEVENT_PROVIDER_NAME, EVENTLOG_SUCCESS, MSG_SUCCESS, LogMsg); |
||
60 | 1: |
||
61 | WriteEventLog(LOGEVENT_PROVIDER_NAME, EVENTLOG_INFORMATION_TYPE, MSG_INFORMATIONAL, LogMsg); |
||
62 | 2: |
||
63 | WriteEventLog(LOGEVENT_PROVIDER_NAME, EVENTLOG_WARNING_TYPE, MSG_WARNING, LogMsg); |
||
64 | 3: |
||
65 | WriteEventLog(LOGEVENT_PROVIDER_NAME, EVENTLOG_ERROR_TYPE, MSG_ERROR, LogMsg); |
||
66 | else |
||
67 | // TODO: Exception/Error ? |
||
68 | end; |
||
69 | end; |
||
70 | |||
71 | initialization |
||
72 | TAutoObjectFactory.Create(ComServer, TViaThinkSoftSimpleEventLog, Class_ViaThinkSoftSimpleEventLog, |
||
73 | ciMultiInstance, tmApartment); |
||
74 | end. |