How To Get the Number of Windows NT Event Log Records in Visual Basic (216146)



The information in this article applies to:

  • Microsoft Visual Basic Standard Edition, 32-bit, for Windows 4.0
  • Microsoft Visual Basic Professional Edition, 32-bit, for Windows 4.0
  • Microsoft Visual Basic Enterprise Edition, 32-bit, for Windows 4.0
  • Microsoft Visual Basic Learning Edition for Windows 5.0
  • Microsoft Visual Basic Learning Edition for Windows 6.0
  • Microsoft Visual Basic Professional Edition for Windows 5.0
  • Microsoft Visual Basic Professional Edition for Windows 6.0
  • Microsoft Visual Basic Enterprise Edition for Windows 5.0
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0

This article was previously published under Q216146

SUMMARY

Event logging in Windows provides a standard, centralized way for Windows and other applications to record important software and hardware events. Event logging also supplies a standard user interface for viewing the logs and a programming interface for examining the logs.

This article illustrates how to get the number of records contained within a specified Microsoft Windows 2000 or Windows NT Event Log with Visual Basic version 4.0 and later. This can be done using the GetNumberOfEventLogRecords API call. While Visual Basic 5.0 and later versions have built in functionality for event logging, they do not provide the functionality that the Win32 API does.

MORE INFORMATION

The following example shows how to get the number of event log records in the local Application Event Log.

Step by Step Example

  1. Create a new Visual Basic project. Form1 is created by default.
  2. Add a command button to Form1. Change the name of the command button to cmdGetNumberOfEventLogRecords.
  3. Add the following code to the Form1 code window:
    Private Declare Function GetNumberOfEventLogRecords Lib "advapi32.dll" ( _
        ByVal hEventLog As Long, _
        NumberOfRecords As Long) _
        As Long
    
    Private Declare Function CloseEventLog Lib "advapi32.dll" ( _
        ByVal hEventLog As Long) _
        As Long
    
    Private Declare Function OpenEventLog Lib "advapi32.dll" Alias "OpenEventLogA" ( _
        ByVal lpUNCServerName As String, _
        ByVal lpSourceName As String) _
        As Long
    
    Private Sub cmdGetNumberOfEventLogRecords_Click()
        Dim hEventLog As Long
        Dim lEventLogRecordCount As Long
        Dim lretv As Long
        
        hEventLog = OpenEventLog(vbNullString, "Application")
        If hEventLog = 0 Then
             Debug.Print "OpenEventLog Failed"
             Exit Sub
        End If
        
        lretv = GetNumberOfEventLogRecords(hEventLog, lEventLogRecordCount)
        If lretv = 0 Then
             Debug.Print GetNumberOfEventLogRecords Failed"
             Exit Sub
        Else
            Debug.Print "Number of records: " & CStr(lEventLogRecordCount)
        End If
                    
        lretv = CloseEventLog(hEventLog)
        If lretv = 0 Then
             Debug.Print "CloseEventLog Failed"
             Exit Sub
        End If
    
    End Sub
  4. Press F5 to run the project, and then and click the cmdGetNumberOfEventLogRecords command button. A message box should appear that displays the number of records.

REFERENCES

For additional information on event logging from Visual Basic, click the article numbers below to view the articles in the Microsoft Knowledge Base:

154576 How To Write to the Windows NT Event Log from Visual Basic

161306 INFO: App.LogEvent Only Logs in Compiled Applications

184747 INFO: Event Logging in Visual Basic

216097 How To Clear the NT Event Log in Visual Basic

216089 How To Backup the NT Event Log in Visual Basic


Modification Type:MinorLast Reviewed:7/15/2004
Keywords:kbAPI kbCodeSnippet kbEventLog kbhowto KB216146 kbAudDeveloper