作者:Swigart Consulting LLC. 的 Scott Swigart
简介
Visual Basic 6 可通过“App.LogEvent”写入事件日志。但是,此 API 有许多严格的限制。首先,不能为事件定义来源(在事件查看器中始终显示为“VBRuntime”),而且不能指定事件 ID 或事件类别。还限制您只能写入应用程序事件日志,不能创建自己的自定义来源和日志。
通过使用 .NET Framework 免费提供的类,可以克服所有这些限制,这样可以使您有效地编写应用程序,以便用户、管理员或其他支持人员都可以查看日志来诊断问题。
.NET Framework 提供了一个强大的 EventLog 类,用它可以轻松地处理事件日志。不过您不能直接从 VB6 访问此类,依照 VB Fusion(英文)系列文章中的精神,可以通过创建封装 .NET 类的 COM 包装从 VB6 中访问此功能。
我还创建了一个练习此事件日志功能的示例 VB6 应用程序。
创建包装类时,大部分工作只是将 .NET 类型转换为 VB6 可以理解的类型。GetEventLogs 方法通常返回一组 EventLog 对象,不过不能直接从 VB6 中使用这些 EventLog 对象。但是,下列 VB.NET 函数将计算机上的所有事件日志的列表转换为一组字符串,VB6 很容易就可以使用这些字符串。通常,您拥有系统事件日志、安全性事件日志和应用程序事件日志,但是某些应用程序还会创建自己的自定义事件日志,而此方法还可以显示这些事件日志:
清单 1:使用 VB.NET 列出计算机上的所有事件日志
Public Function GetEventLogs() As String() Dim logs(EventLog.GetEventLogs.Length - 1) As String Dim i As Integer = 0 For Each el As EventLog In EventLog.GetEventLogs() logs(i) = el.Log i += 1 Next Return logs End Function
您可以看到,EventLog 类使您能够通过 GetEventLogs 函数访问所有事件日志。调用此函数后,它就会遍历结果,并将所有事件日志名称转换为一组字符串。然后,可以将此 VB.NET 代码作为 COM 对象进行公开,从而允许从 VB6 中调用它。
从 VB6 中调用此代码以及(例如)用结果填充列表框就像下面这样简单:
清单 2:使用 VB6 在列表框中显示日志名称
Dim eventLog As NetFrameworkWrappers.EventLogWrapper Set eventLog = New NetFrameworkWrappers.EventLogWrapper lstEventLogs.Clear Dim logs() As String logs = eventLog.GetEventLogs Dim log As Variant For Each log In logs lstEventLogs.AddItem log Next
相关专题
- Linux日志专题 (8510篇文章)
- .NET Framework新手入门 (132篇文章)
- .NET移动与嵌入式技术 (5969篇文章)
- .NET开发手册 (5670篇文章)
- .Net Framework应用篇 (25篇文章)
- .NET实用开发 (1686篇文章)
- .NET框架架构 (467篇文章)
- vb.net GDI+入门——画笔、画刷和颜色 (3次浏览)
- C# 3.0新特性之扩展方法 (1次浏览)
- WPF的Attached属性 (0次浏览)
- WPF,将颠覆的设计世界? (0次浏览)
- Windows是否已经变成了一个怪物? (0次浏览)
- Windows2008用RODC保证分支机构安全 (0次浏览)
- Windows2008的NLB配置攻略 (0次浏览)
- Windows SharePoint Services 和 SharePoint P (0次浏览)
- Windows Forms中实现统一的数据验证(一) (0次浏览)
- Windows API一日一练:DrawText函数 (0次浏览)




