程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 淺析C++程序監視Windows事件日志

淺析C++程序監視Windows事件日志

編輯:C++入門知識

下面的文章主要講述如何使用C++程序中監視Windows事件日志,還可以對程序進行擴充,如在事件日志記錄到特定的事件類型時,發電子郵件通知用戶,本文提供的C++程序代碼充分的說明。

.NET 1.0/1.1托管C++程序,如果你在使用一個更高版本的 .NET,需要在工程屬性對話框中設置/clr:oldSyntax編譯選項,或調整以下代碼使之符合新的托管語法。用於Windows事件日志的關鍵 .NET類型是Diagnostics::EventLog類。

1、定義一個托管類並實現事件日志通知處理程序

處理程序OnNewLogEntry)會在"新事件日志項"事件引發時調用,同時,請注意此處的EntryWrittenEventHandler,以下是示例代碼:

  1. __gc class NewLogEntryEventHandler  
  2. {  
  3.  public:  
  4. NewLogEntryEventHandler() {}  
  5.  public:  
  6. void OnNewLogEntry(Object* sender, EntryWrittenEventArgs* e)  
  7. {  
  8.  //獲取並處理最近創建的項  
  9.  EventLogEntry* eentry = e->Entry;  
  10. }  
  11. }; 

2、實例化一個EventLog對象,並把它的EnableRaisingEvents屬性設為true
屬性EventLog::EnableRaisingEvents是一個布爾類型,其控制了在項目添加到EventLog對象指定的日志時,是否引發事件:

  1. EventLog* log = new EventLog("Application");  
  2. log->EnableRaisingEvents = true;  

3、把事件處理程序連接到"新事件日志項"事件
首先,實例化定義了事件處理程序的對象在此例中為NewLogEntryEventHandler),接著,把事件方法OnNewLogEntry)添加到EventLog::EntryWritten的事件處理程序列表中:

  1. NewLogEntryEventHandler* handler = new NewLogEntryEventHandler();  
  2. log->EntryWritten +=  
  3. new EntryWrittenEventHandler( handler,&NewLogEntryEventHandler::OnNewLogEntry); 

4、為特定事件的處理編寫代碼

回過頭來看一個OnNewLogEntry方法,可以看到傳遞給事件處理程序的EntryWrittenEventArgs對象有一個名為EventLogEntry的成員,其包含了有關記錄項目的詳細情況,具體為以下屬性:

  1. ·MachineName--創建事件日志的電腦系統名。   
  2.  
  3. ·Source--創建此事件的事件源或程序源。  
  4.  
  5. ·Message--用戶可在事件查看器中讀取這條文本值,其描述了記錄的事件。  
  6.  
  7. ·Event Type--此值代表了EventLogEntryType)為一個枚舉值,其代表記錄的事件類型:信息默認)、警告、錯誤、審核成功、審核失敗。  
  8.  
  9. ·Event ID--為有關事件程序特定的號碼。  
  10.  
  11. ·Data--此值通常用於存儲二進制信息--如內存轉儲--也是與事件有關的。 
  1. C與C++中標准輸入實現方式上的一點區別
  2. C++編譯器如何對Const常量進行分配存儲空間
  3. C++類庫設計的基本構思與方法
  4. 玩轉C++語言的幾種方法
  5. 如何更好的進行C++代碼編制

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved