Skip to main content
guest
Join
|
Help
|
Sign In
Liberty BASIC Programmer's Encyc
Home
guest
|
Join
|
Help
|
Sign In
Wiki Home
Recent Changes
Pages and Files
Members
Home
General Tutorials
Advanced Tutorials
GUI Programming
Graphics and Games
Strings and Text
Numbers and Math
Using Files
Windows API
Communications
Programmer's Tools
Articles by Date
FAQs
Rosetta Code
General Articles
Newsletters Contents
Table of Contents
Demos
Submit Articles
TOS and License
EventLog
Edit
1
…
1
Tags
api
edit
Save
Cancel
Notify
RSS
Backlinks
Source
Print
Export (PDF)
<strong>Reading and Writing to Windows Event Log</strong><br /> <em>[[user:StPendl]]</em><br /> <img id="wikitext@@toc@@flat" class="WikiMedia WikiMediaTocFlat" title="Table of Contents" src="/site/embedthumbnail/toc/flat?w=100&h=16"/><hr /> <h1>Read Event Log</h1> <pre class="lb">struct EVENTLOGRECORD, _<br/> Length as uLong, _<br/> Reserved as uLong, _<br/> RecordNumber as uLong, _<br/> TimeGenerated as uLong, _<br/> TimeWritten as uLong, _<br/> EventID as uLong, _<br/> EventType as word, _<br/> NumStrings as word, _<br/> EventCategory as word, _<br/> ReservedFlags as word, _<br/> ClosingRecordNumber as uLong, _<br/> StringOffset as uLong, _<br/> UserSidLength as uLong, _<br/> UserSidOffset as uLong, _<br/> DataLength as uLong, _<br/> DataOffset as uLong<br/><br/> Open "advapi32.dll" for dll as #advapi32<br/><br/> lpSourceName$ = "Application"; chr$(0)<br/><br/> calldll #advapi32, "OpenEventLogA", _<br/> lpUNCServerName as ulong, _<br/> lpSourceName$ as ptr, _<br/> hEventLog as ulong<br/><br/> print<br/> print "Open Event Log Handle: "; hEventLog<br/><br/> if hEventLog = 0 then call DisplayError<br/><br/> struct OldestRecord, value as ulong<br/><br/> calldll #advapi32, "GetOldestEventLogRecord", _<br/> hEventLog As uLong, _<br/> OldestRecord as struct, _<br/> result as long<br/><br/> print<br/> print "Oldest Event Log result: "; result<br/> print "Oldest Event Log Number: "; OldestRecord.value.struct<br/><br/> if result = 0 then call DisplayError<br/><br/> struct NumberOfRecords, value as ulong<br/><br/> calldll #advapi32, "GetNumberOfEventLogRecords", _<br/> hEventLog As uLong, _<br/> NumberOfRecords as struct, _<br/> result as long<br/><br/> print<br/> print "Number of Event Log Records result: "; result<br/> print "Number of Event Logs: "; NumberOfRecords.value.struct<br/><br/> if result = 0 then call DisplayError<br/><br/> Struct pnBytesRead, value As uLong<br/> Struct pnMinNumberOfBytesNeeded, value As uLong<br/><br/> dwReadFlags = _EVENTLOG_SEEK_READ or _EVENTLOG_FORWARDS_READ<br/> dwRecordOffset = OldestRecord.value.struct + NumberOfRecords.value.struct - 1<br/> nNumberOfBytesToRead = hexdec("7ffff")<br/> lpBuffer$ = space$(nNumberOfBytesToRead); chr$(0)<br/><br/> calldll #advapi32, "ReadEventLogA", _<br/> hEventLog As uLong, _<br/> dwReadFlags As uLong, _<br/> dwRecordOffset As uLong, _<br/> lpBuffer$ As ptr , _<br/> nNumberOfBytesToRead As uLong, _<br/> pnBytesRead As Struct , _<br/> pnMinNumberOfBytesNeeded As struct , _<br/> result As long<br/><br/> 'print something i can check<br/> print<br/> print "Results: "<br/> print pnMinNumberOfBytesNeeded.value.struct, pnBytesRead.value.struct<br/> print "Buffer: "<br/> print left$(lpBuffer$, pnBytesRead.value.struct)<br/><br/> print<br/> print "Read Event Log result: "; result<br/><br/> if result = 0 then call DisplayError<br/><br/> calldll #advapi32, "CloseEventLog", _<br/> hEventLog as ulong, _<br/> result as long<br/><br/> print<br/> print "Close Event Log result: "; result<br/><br/> if result = 0 then call DisplayError<br/><br/> close #advapi32<br/> end<br/><br/>sub DisplayError<br/> calldll #kernel32, "GetLastError", _<br/> ErrorCode as ulong<br/><br/> dwFlags = _FORMAT_MESSAGE_FROM_SYSTEM<br/> nSize = 1024<br/> lpBuffer$ = space$(nSize); chr$(0)<br/> dwMessageID = ErrorCode<br/><br/> calldll #kernel32, "FormatMessageA", _<br/> dwFlags as ulong, _<br/> lpSource as ulong, _<br/> dwMessageID as ulong, _<br/> dwLanguageID as ulong, _<br/> lpBuffer$ as ptr, _<br/> nSize as ulong, _<br/> Arguments as ulong, _<br/> result as ulong<br/><br/> print "Error "; ErrorCode; ": "; left$(lpBuffer$, result)<br/>end sub<br/></pre> <br /> <h1>Write Event Log</h1> <pre class="lb"> open "advapi32.dll" for dll as #advapi32<br/><br/> struct lpStrings, string$ as ptr<br/><br/> lpSourceName$ = "Application"; chr$(0)<br/><br/> wType = _EVENTLOG_INFORMATION_TYPE<br/> ' dwEventID = 8194<br/> ' wCategory = 5<br/> wNumStrings = 1<br/> lpStrings.string$.struct = "LB Event Log Test"; chr$(0)<br/><br/> calldll #advapi32, "RegisterEventSourceA", _<br/> lpUNCServerName as ulong, _ 'local computer if 0<br/> lpSourceName$ as ptr, _ 'source eg. application name<br/> handle as ulong 'handle for ReportEvent<br/><br/> print<br/> print "Register Event Source Handle: "; handle<br/><br/> if handle = 0 then call DisplayError<br/><br/> calldll #advapi32, "ReportEventA", _<br/> handle as ulong, _ 'event log handle<br/> wType as word, _ 'event type<br/> wCategory as word, _ 'category zero<br/> dwEventID as ulong, _ 'event identifier<br/> lpUserSID as ulong, _ 'no user security identifier<br/> wNumStrings as word, _ 'one substitution string<br/> dwDataSize as ulong, _ 'no data<br/> lpStrings as struct, _ 'address of string array<br/> lpRawData as ulong, _ 'address of data<br/> result as long<br/><br/> print<br/> print "Report Event Result: "; result<br/><br/> if result = 0 then call DisplayError<br/><br/> calldll #advapi32, "DeregisterEventSource", _<br/> handle as ulong, _<br/> result as long<br/><br/> print<br/> print "Deregister Event Source Result: "; result<br/><br/> if result = 0 then call DisplayError<br/><br/> print<br/> print "Finished ..."<br/><br/> close #advapi32<br/> end<br/><br/>sub DisplayError<br/> calldll #kernel32, "GetLastError", _<br/> ErrorCode as ulong<br/><br/> dwFlags = _FORMAT_MESSAGE_FROM_SYSTEM<br/> nSize = 1024<br/> lpBuffer$ = space$(nSize); chr$(0)<br/> dwMessageID = ErrorCode<br/><br/> calldll #kernel32, "FormatMessageA", _<br/> dwFlags as ulong, _<br/> lpSource as ulong, _<br/> dwMessageID as ulong, _<br/> dwLanguageID as ulong, _<br/> lpBuffer$ as ptr, _<br/> nSize as ulong, _<br/> Arguments as ulong, _<br/> result as ulong<br/><br/> print "Error "; ErrorCode; ": "; left$(lpBuffer$, result)<br/>end sub<br/></pre> <hr /> <img id="wikitext@@toc@@flat" class="WikiMedia WikiMediaTocFlat" title="Table of Contents" src="/site/embedthumbnail/toc/flat?w=100&h=16"/>
Javascript Required
You need to enable Javascript in your browser to edit pages.
help on how to format text
Turn off "Getting Started"
Home
...
Loading...