C# Example
The Log Parser scriptable COM components can be easily consumed by .NET applications using the COM interop feature of the .NET Framework.
The COM interop feature of the .NET framework allows users to instantiate
and use COM objects through the use of Runtime Callable Wrappers (RCW).
The RCW is a .NET class that wraps a COM object and gives a .NET application
the notion that it's interacting with a managed .NET component.
RCW's are created by either using the Type Library Importer (tlbimp.exe) tool,
or by importing a reference to the Log Parser scriptable COM objects through
the Microsoft Visual
In either case, the RCW's are generated and stored in an assembly named
"Interop.MSUtil.dll", which contains Runtime Callable Wrappers for all of the
Log Parser scriptable COM components. By referencing this assembly, our .NET applications
can use the Log Parser scriptable COM components as if they were managed .NET components.
The following example C# application executes a Log Parser query that returns the latest 50 events from the System event log, printing the query results to the console output:
using System; using LogQuery = Interop.MSUtil.LogQueryClassClass; using EventLogInputFormat = Interop.MSUtil.COMEventLogInputContextClassClass; using LogRecordSet = Interop.MSUtil.ILogRecordset; class LogParserSample { public static void Main(string[] Args) { try { // Instantiate the LogQuery object LogQuery oLogQuery = new LogQuery(); // Instantiate the Event Log Input Format object EventLogInputFormat oEVTInputFormat = new EventLogInputFormat(); // Set its "direction" parameter to "BW" oEVTInputFormat.direction = "BW"; // Create the query string query = @"SELECT TOP 50 SourceName, EventID, Message FROM System"; // Execute the query LogRecordSet oRecordSet = oLogQuery.Execute(query, oEVTInputFormat); // Browse the recordset for(; !oRecordSet.atEnd(); oRecordSet.moveNext()) { Console.WriteLine(oRecordSet.getRecord().toNativeString(",")); } // Close the recordset oRecordSet.close(); } catch(System.Runtime.InteropServices.COMException exc) { Console.WriteLine("Unexpected error: " + exc.Message); } } }
The following steps describe how to build this sample application:
- Build an interop assembly containing the Runtime Callable Wrappers for the Log Parser
scriptable COM components.
This step can by executed in two different ways:- From within a Visual Studio .NET project, import a reference to the Log Parser scriptable COM components;
- From a command-line shell, execute the tlbimp.exe tool (generally available
in the "Bin" folder of the .NET framework SDK), specifying the path
to the LogParser.dll binary:
C:\>tlbimp LogParser.dll /out:Interop.MSUtil.dll
- Compile the sample source file into an executable, referencing the newly created
"Interop.MSUtil.dll" assembly.
From a command-line shell, this step can be executed as follows:C:\>csc /r:Interop.MSUtil.dll /out:Events.exe sample.cs