[ros-diffs] [cfinck] 29547: Add an Event Log Viewer coded by Marc Piulachs (marc DOT piulachs AT codexchange DOT net) The icons were taken from the comctl32.dll. I did not add it to the "reactos.dff" as ReactOS doesn't support Event Logs yet. See issue #2602 for more details.

cfinck at svn.reactos.org cfinck at svn.reactos.org
Sat Oct 13 12:15:40 CEST 2007


Author: cfinck
Date: Sat Oct 13 14:15:37 2007
New Revision: 29547

URL: http://svn.reactos.org/svn/reactos?rev=29547&view=rev
Log:
Add an Event Log Viewer coded by Marc Piulachs (marc DOT piulachs AT codexchange DOT net)
The icons were taken from the comctl32.dll.
I did not add it to the "reactos.dff" as ReactOS doesn't support Event Logs yet.
See issue #2602 for more details.

Added:
    trunk/reactos/base/applications/mscutils/eventvwr/   (with props)
    trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.c   (with props)
    trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.h   (with props)
    trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.rbuild   (with props)
    trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.rc   (with props)
    trunk/reactos/base/applications/mscutils/eventvwr/lang/   (with props)
    trunk/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc   (with props)
    trunk/reactos/base/applications/mscutils/eventvwr/res/   (with props)
    trunk/reactos/base/applications/mscutils/eventvwr/res/error.ico   (with props)
    trunk/reactos/base/applications/mscutils/eventvwr/res/eventvwr.ico   (with props)
    trunk/reactos/base/applications/mscutils/eventvwr/res/info.ico   (with props)
    trunk/reactos/base/applications/mscutils/eventvwr/res/warning.ico   (with props)
    trunk/reactos/base/applications/mscutils/eventvwr/resource.h   (with props)
    trunk/reactos/base/applications/mscutils/eventvwr/rsrc.rc   (with props)
Modified:
    trunk/reactos/base/applications/mscutils/directory.rbuild   (contents, props changed)

Modified: trunk/reactos/base/applications/mscutils/directory.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/directory.rbuild?rev=29547&r1=29546&r2=29547&view=diff
==============================================================================
--- trunk/reactos/base/applications/mscutils/directory.rbuild (original)
+++ trunk/reactos/base/applications/mscutils/directory.rbuild Sat Oct 13 14:15:37 2007
@@ -1,10 +1,13 @@
-<?xml version="1.0"?>
-<!DOCTYPE group SYSTEM "../../../tools/rbuild/project.dtd">
-<group xmlns:xi="http://www.w3.org/2001/XInclude">
-	<directory name="devmgmt">
-		<xi:include href="devmgmt/devmgmt.rbuild" />
-	</directory>
-	<directory name="servman">
-		<xi:include href="servman/servman.rbuild" />
-	</directory>
-</group>
+<?xml version="1.0"?>
+<!DOCTYPE group SYSTEM "../../../tools/rbuild/project.dtd">
+<group xmlns:xi="http://www.w3.org/2001/XInclude">
+	<directory name="devmgmt">
+		<xi:include href="devmgmt/devmgmt.rbuild" />
+	</directory>
+	<directory name="eventvwr">
+		<xi:include href="eventvwr/eventvwr.rbuild" />
+	</directory>
+	<directory name="servman">
+		<xi:include href="servman/servman.rbuild" />
+	</directory>
+</group>

Propchange: trunk/reactos/base/applications/mscutils/directory.rbuild
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/reactos/base/applications/mscutils/eventvwr/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Oct 13 14:15:37 2007
@@ -1,0 +1,7 @@
+GNUmakefile
+*.vcproj
+*.user
+*.cbp
+*.ncb
+*.suo
+*.sln

Added: trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.c?rev=29547&view=auto
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.c (added)
+++ trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.c Sat Oct 13 14:15:37 2007
@@ -1,0 +1,1137 @@
+/*
+ *  ReactOS Win32 Applications
+ *  Copyright (C) 2007 ReactOS Team
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/*
+ * COPYRIGHT : See COPYING in the top level directory
+ * PROJECT   : Event Log Viewer
+ * FILE      : eventvwr.c
+ * PROGRAMMER: Marc Piulachs (marc.piulachs at codexchange [dot] net)
+ */
+
+#include "eventvwr.h"
+#include <windows.h>	// Standard windows include file
+#include <commctrl.h>	// For ListView control APIs
+#include <tchar.h>		// For TCHAR and string functions.
+#include <stdio.h>
+#include <time.h>
+
+#if _MSC_VER
+	#pragma warning(disable: 4996)   // 'strdup' was declared deprecated 
+	#define _CRT_SECURE_NO_DEPRECATE // all deprecated 'unsafe string functions 
+#endif
+
+static const LPSTR EVENT_SOURCE_APPLICATION	= "Application";
+static const LPSTR EVENT_SOURCE_SECURITY	= "Security";
+static const LPSTR EVENT_SOURCE_SYSTEM		= "System";
+
+//MessageFile message buffer size
+#define EVENT_MESSAGE_FILE_BUFFER			1024*10      
+#define EVENT_DLL_SEPARATOR		            ";" 
+#define EVENT_MESSAGE_FILE					"EventMessageFile"
+#define EVENT_CATEGORY_MESSAGE_FILE			"CategoryMessageFile"
+#define EVENT_PARAMETER_MESSAGE_FILE		"ParameterMessageFile"
+
+#define MAX_LOADSTRING 255
+
+// Global Variables:
+HINSTANCE hInst;								// current instance
+TCHAR szTitle[MAX_LOADSTRING];					// The title bar text
+TCHAR szWindowClass[MAX_LOADSTRING];			// the main window class name
+
+// Globals
+HWND hwndMainWindow;         // Main window
+HWND hwndListView;           // ListView control
+HWND hwndStatus;			 // Status bar
+
+LPTSTR lpSourceLogName	= NULL;
+LPTSTR lpComputerName	= NULL;
+
+// Forward declarations of functions included in this code module:
+ATOM				MyRegisterClass(HINSTANCE hInstance);
+BOOL				InitInstance(HINSTANCE, int);
+LRESULT CALLBACK	WndProc			(HWND, UINT, WPARAM, LPARAM);
+INT_PTR CALLBACK	About			(HWND, UINT, WPARAM, LPARAM);
+INT_PTR CALLBACK	EventDetails	(HWND, UINT, WPARAM, LPARAM);
+static INT_PTR CALLBACK StatusMessageWindowProc (HWND, UINT, WPARAM, LPARAM);
+
+int APIENTRY _tWinMain(HINSTANCE hInstance,
+                     HINSTANCE hPrevInstance,
+                     LPTSTR    lpCmdLine,
+                     int       nCmdShow)
+{
+	MSG msg;
+	HACCEL hAccelTable;
+	INITCOMMONCONTROLSEX iccx;
+
+	UNREFERENCED_PARAMETER(hPrevInstance);
+	UNREFERENCED_PARAMETER(lpCmdLine);
+
+    // Whenever any of the common controls are used in your app,
+    // you must call InitCommonControlsEx() to register the classes
+    // for those controls.
+    iccx.dwSize = sizeof(INITCOMMONCONTROLSEX);
+    iccx.dwICC = ICC_LISTVIEW_CLASSES;
+    InitCommonControlsEx(&iccx);
+
+	// Initialize global strings
+	LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
+	LoadString(hInstance, IDC_EVENTVWR, szWindowClass, MAX_LOADSTRING);
+	MyRegisterClass(hInstance);
+
+	// Perform application initialization:
+	if (!InitInstance (hInstance, nCmdShow))
+	{
+		return FALSE;
+	}
+
+	hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_EVENTVWR));
+
+	// Main message loop:
+	while (GetMessage(&msg, NULL, 0, 0))
+	{
+		if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
+		{
+			TranslateMessage(&msg);
+			DispatchMessage(&msg);
+		}
+	}
+
+	return (int) msg.wParam;
+}
+
+VOID EventTimeToSystemTime (DWORD EventTime, SYSTEMTIME *pSystemTime)
+{
+	SYSTEMTIME st1970 = { 1970, 1, 0, 1, 0, 0, 0, 0 };
+	FILETIME ftLocal;
+	union {
+		FILETIME ft;
+		ULONGLONG ll;
+	} u1970, uUCT;
+	
+	uUCT.ft.dwHighDateTime = 0;
+	uUCT.ft.dwLowDateTime = EventTime;
+	SystemTimeToFileTime(&st1970, &u1970.ft);
+	uUCT.ll = uUCT.ll * 10000000 + u1970.ll;
+	FileTimeToLocalFileTime(&uUCT.ft, &ftLocal);
+	FileTimeToSystemTime(&ftLocal, pSystemTime);
+}
+
+void 
+TrimNulls ( LPSTR s ) 
+{ 
+    char *c; 
+
+    if ( s != (char *) NULL ) 
+    { 
+        c = s + strlen ( s ) - 1; 
+        while ( c >= s && isspace ( *c ) ) 
+            --c; 
+        *++c = '\0'; 
+    } 
+} 
+
+BOOL GetEventMessageFileDLL(
+	IN LPCTSTR lpLogName,
+	IN LPCTSTR SourceName,
+	IN LPCTSTR EntryName, 
+	OUT LPSTR ExpandedName)
+{
+	DWORD dwSize;
+	BYTE szModuleName[MAX_PATH];
+	TCHAR szKeyName[MAX_PATH];
+	HKEY hAppKey = NULL;
+	HKEY hSourceKey = NULL;
+	BOOL bReturn = FALSE; // Return
+
+    _tcscpy(szKeyName, TEXT("SYSTEM\\CurrentControlSet\\Services\\EventLog"));
+    _tcscat(szKeyName, _T("\\"));
+    _tcscat(szKeyName, lpLogName);
+	
+	if (RegOpenKeyEx(
+		HKEY_LOCAL_MACHINE,
+		szKeyName,
+		0,
+		KEY_READ,
+		&hAppKey) == ERROR_SUCCESS) 
+	{
+		if (RegOpenKeyEx(
+			hAppKey,
+			SourceName,
+			0,
+			KEY_READ,
+			&hSourceKey) == ERROR_SUCCESS)
+		{
+			dwSize = MAX_PATH;
+			if (RegQueryValueEx(
+				hSourceKey,
+				EntryName,
+				NULL,
+				NULL,
+				(LPBYTE)szModuleName,
+				&dwSize) == ERROR_SUCCESS)
+			{
+				// Returns a string containing the requested substituted environment variable.
+				ExpandEnvironmentStrings ((LPCTSTR)szModuleName, ExpandedName, MAX_PATH);
+
+				// Succesfull
+				bReturn = TRUE;
+			}
+		}
+	}
+	else
+	{
+		MessageBox (NULL ,
+			_TEXT("Registry access failed!") , 
+			_TEXT("Event Log") , 
+			MB_OK | MB_ICONINFORMATION);
+	}
+
+	if (hSourceKey != NULL) 
+		RegCloseKey(hSourceKey);
+	
+	if (hAppKey != NULL) 
+		RegCloseKey(hAppKey);
+
+	return bReturn;
+}
+
+BOOL GetEventCategory(
+	IN LPCTSTR KeyName,
+	IN LPCTSTR SourceName, 
+	IN EVENTLOGRECORD *pevlr,
+	OUT LPTSTR CategoryName)
+{
+	HANDLE hLibrary = NULL;
+	TCHAR szMessageDLL[MAX_PATH];
+	LPVOID lpMsgBuf = NULL;
+
+	if(GetEventMessageFileDLL (KeyName, SourceName, EVENT_CATEGORY_MESSAGE_FILE , szMessageDLL))
+	{
+		hLibrary = LoadLibraryEx(
+			szMessageDLL,
+			NULL,
+			DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE);
+
+		if(hLibrary != NULL) 
+		{
+			// Retrieve the message string. 
+			if(FormatMessage(
+				FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ARGUMENT_ARRAY,
+				hLibrary,
+				pevlr->EventCategory,
+				MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+				(LPTSTR)&lpMsgBuf,
+				EVENT_MESSAGE_FILE_BUFFER,
+				NULL) != 0)
+			{
+			if (lpMsgBuf)
+			{
+				//Trim the string
+				TrimNulls ((LPSTR)lpMsgBuf);
+
+				// Copy the category name
+				strcpy (CategoryName, (LPCTSTR)lpMsgBuf);
+			}
+			else
+			{
+				strcpy (CategoryName, (LPCTSTR)lpMsgBuf);
+			}
+			}else{
+				strcpy (CategoryName, "None");
+			}
+
+			if(hLibrary != NULL) 
+				FreeLibrary(hLibrary);
+
+			//  Free the buffer allocated by FormatMessage
+			if (lpMsgBuf)
+				LocalFree(lpMsgBuf);
+
+			return TRUE;
+		}
+	}
+
+	strcpy (CategoryName, "None");
+
+	return FALSE;
+}
+
+BOOL GetEventMessage(
+	IN LPCTSTR KeyName,
+	IN LPCTSTR SourceName, 
+	IN EVENTLOGRECORD *pevlr,
+	OUT LPTSTR EventText)
+{
+	DWORD i;
+	HANDLE hLibrary = NULL;
+	char SourceModuleName[1000];
+	char ParameterModuleName[1000];
+	LPTSTR lpMsgBuf = NULL;
+	TCHAR szStringIDNotFound[MAX_LOADSTRING];
+	LPTSTR szDll;
+	LPTSTR szMessage;
+	LPTSTR *szArguments;
+	BOOL bDone = FALSE;
+
+	/* TODO : GetEventMessageFileDLL can return a comma separated list of DLLs */
+	if (GetEventMessageFileDLL (KeyName , SourceName, EVENT_MESSAGE_FILE , SourceModuleName))
+	{
+		// Get the event message
+		szMessage = (LPTSTR)((LPBYTE)pevlr + pevlr->StringOffset);
+
+		// Allocate space for parameters
+		szArguments = (LPTSTR*)malloc(sizeof(LPVOID)* pevlr->NumStrings);
+
+		for (i = 0; i < pevlr->NumStrings ; i++)
+		{
+			if (strstr(szMessage , "%%")) 
+			{
+				if (GetEventMessageFileDLL (KeyName , SourceName, EVENT_PARAMETER_MESSAGE_FILE , ParameterModuleName))
+				{
+					//Not yet support for reading messages from parameter message DLL
+				}
+
+				szArguments[i] = szMessage;
+				szMessage += strlen(szMessage) + 1;
+			}
+			else
+			{
+				szArguments[i] = szMessage;
+				szMessage += strlen(szMessage) + 1;
+			}
+		}
+
+		szDll = strtok(SourceModuleName, EVENT_DLL_SEPARATOR);
+		while ((szDll != NULL) && (!bDone))
+		{ 
+			hLibrary = LoadLibraryEx(
+				szDll,
+				NULL,
+				DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE);
+
+			if (hLibrary == NULL) 
+			{
+				// The DLL could not be loaded try the next one (if any)
+				szDll = strtok (NULL, EVENT_DLL_SEPARATOR);
+			}
+			else
+			{
+				// Retrieve the message string. 
+				if(FormatMessage(
+					FORMAT_MESSAGE_FROM_SYSTEM | 
+					FORMAT_MESSAGE_ALLOCATE_BUFFER | 
+					FORMAT_MESSAGE_FROM_HMODULE | 
+					FORMAT_MESSAGE_ARGUMENT_ARRAY,
+					hLibrary,
+					pevlr->EventID,
+					MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+					(LPTSTR)&lpMsgBuf,
+					0,
+					szArguments) == 0) 
+				{
+					// We haven't found the string , get next DLL (if any)
+					szDll = strtok (NULL, EVENT_DLL_SEPARATOR); 
+				}
+				else
+				{	
+					if (lpMsgBuf)
+					{
+						// The ID was found and the message was formated
+						bDone = TRUE;
+
+						//Trim the string
+						TrimNulls ((LPSTR)lpMsgBuf);
+
+						// Copy the event text
+						strcpy (EventText ,lpMsgBuf);
+					}
+				}
+
+				FreeLibrary (hLibrary);
+			}
+		}
+
+		if (!bDone)
+		{
+			LoadString(hInst, IDC_EVENTSTRINGIDNOTFOUND, szStringIDNotFound, MAX_LOADSTRING);
+			wsprintf (EventText, szStringIDNotFound , (DWORD)(pevlr->EventID & 0xFFFF) , SourceName );
+		}
+
+		// No more dlls to try , return result
+		return bDone;
+	}
+
+	LoadString(hInst, IDC_EVENTSTRINGIDNOTFOUND, szStringIDNotFound, MAX_LOADSTRING);
+	wsprintf (EventText, szStringIDNotFound , (DWORD)(pevlr->EventID & 0xFFFF) , SourceName );
+
+	return FALSE;
+}
+
+char* GetEventType (WORD dwEventType)
+{
+    switch(dwEventType)
+    {
+        case EVENTLOG_ERROR_TYPE:
+            return "Error";
+            break;
+        case EVENTLOG_WARNING_TYPE:
+            return "Warning";
+            break;
+        case EVENTLOG_INFORMATION_TYPE:
+            return "Information";
+            break;
+        case EVENTLOG_AUDIT_SUCCESS:
+            return "Audit Success";
+            break;
+        case EVENTLOG_AUDIT_FAILURE:
+            return "Audit Failure";
+            break;
+        default:
+            return "Unknown Event";
+            break;
+    }
+}
+
+BOOL 
+GetEventUserName (EVENTLOGRECORD *pelr, OUT LPSTR pszUser)
+{
+    PSID lpSid;
+	char szName[1024];
+	char szDomain[1024];
+    SID_NAME_USE peUse;
+    DWORD cbName = 1024;
+    DWORD cbDomain = 1024;
+
+    // Point to the SID. 
+    lpSid = (PSID)((LPBYTE) pelr + pelr->UserSidOffset); 
+
+	 // User SID
+	if(pelr->UserSidLength > 0)
+	{
+		if (LookupAccountSid(
+				NULL, 
+				lpSid, 
+				szName, 
+				&cbName, 
+				szDomain, 
+				&cbDomain, 
+				&peUse))
+		{
+			strcpy (pszUser , szName);
+			return TRUE;
+		}
+	}
+
+    return FALSE;
+}
+
+static DWORD WINAPI
+ShowStatusMessageThread(
+    IN LPVOID lpParameter)
+{
+    HWND *phWnd = (HWND *)lpParameter;
+    HWND hWnd;
+    MSG Msg;
+
+    hWnd = CreateDialogParam(
+        hInst,
+        MAKEINTRESOURCE(IDD_PROGRESSBOX),
+        GetDesktopWindow(),
+        StatusMessageWindowProc,
+        (LPARAM)NULL);
+    if (!hWnd)
+        return 0;
+    *phWnd = hWnd;
+
+    ShowWindow(hWnd, SW_SHOW);
+
+    /* Message loop for the Status window */
+    while (GetMessage(&Msg, NULL, 0, 0))
+    {
+        TranslateMessage(&Msg);
+        DispatchMessage(&Msg);
+    }
+
+    return 0;
+}
+
+VOID QueryEventMessages (
+	LPTSTR lpMachineName , 
+	LPTSTR lpLogName)
+{
+	HWND hwndDlg;
+    HANDLE hEventLog;
+    EVENTLOGRECORD *pevlr;
+    BYTE bBuffer[MAX_PATH];
+    DWORD dwRead, dwNeeded, dwThisRecord , dwTotalRecords , dwCurrentRecord = 1 , dwRecordsToRead = 0 , dwFlags;
+    LPSTR lpSourceName;
+	LPSTR lpComputerName;
+	LPSTR lpEventStr;
+	LPSTR lpData;
+	BOOL bResult = TRUE; // Read succeeded.
+
+	char szWindowTitle[MAX_PATH];
+	char szStatusText[MAX_PATH];
+	char szLocalDate[MAX_PATH];
+	char szLocalTime[MAX_PATH];
+	char szEventID[MAX_PATH];
+	char szCategoryID[MAX_PATH];
+	char szUsername[MAX_PATH];
+	char szEventText[EVENT_MESSAGE_FILE_BUFFER];
+	char szCategory[MAX_PATH];
+
+	SYSTEMTIME time;
+	LVITEM lviEventItem;
+
+	dwFlags = EVENTLOG_FORWARDS_READ | EVENTLOG_SEQUENTIAL_READ;
+
+	lpSourceLogName = lpLogName;
+	lpComputerName = lpMachineName;
+
+    // Open the event log.
+    hEventLog = OpenEventLog( 
+					lpMachineName,
+					lpLogName);
+
+    if (hEventLog == NULL)
+    {
+		MessageBox (NULL ,
+			_TEXT("Could not open the event log.") ,
+			_TEXT("Event Log") , 
+			MB_OK | MB_ICONINFORMATION);
+        return;
+    }
+
+	//Disable listview redraw
+	SendMessage(hwndListView, WM_SETREDRAW, FALSE, 0);
+
+	// Clear the list view
+	(void)ListView_DeleteAllItems (hwndListView);
+    
+    // Initialize the event record buffer.
+    pevlr = (EVENTLOGRECORD *)&bBuffer;
+
+    // Get the record number of the oldest event log record.
+    GetOldestEventLogRecord(hEventLog, &dwThisRecord);
+
+	// Get the total number of event log records.
+	GetNumberOfEventLogRecords (hEventLog , &dwTotalRecords);
+
+	//If we have at least 1000 records show the waiting dialog
+	if (dwTotalRecords > 1000)
+	{
+		CreateThread(
+			NULL,
+			0,
+			ShowStatusMessageThread,
+			(LPVOID)&hwndDlg,
+			0,
+			NULL);
+	}
+
+    while (dwCurrentRecord < dwTotalRecords)
+    {
+		pevlr = (EVENTLOGRECORD*)malloc(MAX_PATH);
+              
+		bResult = ReadEventLog(
+			hEventLog,						// Event log handle
+			dwFlags,						// Sequential read
+			0,                              // Ignored for sequential read
+			pevlr,                          // Pointer to buffer
+			MAX_PATH,                    // Size of buffer
+			&dwRead,                        // Number of bytes read
+			&dwNeeded);						// Bytes in the next record
+
+    	if((!bResult) && (GetLastError () == ERROR_INSUFFICIENT_BUFFER))
+    	{
+			pevlr = (EVENTLOGRECORD*)malloc (dwNeeded);
+
+    		ReadEventLog(
+				hEventLog,			// event log handle
+                dwFlags,            // read flags
+                0,					// offset; default is 0
+                pevlr,              // pointer to buffer
+                dwNeeded,           // size of buffer
+                &dwRead,            // number of bytes read
+                &dwNeeded);         // bytes in next record
+    	}
+
+        while (dwRead > 0)
+        {
+			strcpy (szUsername , "N/A");
+			strcpy (szEventText , "N/A");
+			strcpy (szCategory , "None");
+
+            // Get the event source name.
+            lpSourceName = (LPSTR) ((LPBYTE) pevlr + sizeof(EVENTLOGRECORD));
+
+			// Get the computer name
+			lpComputerName = (LPSTR) ((LPBYTE) pevlr + sizeof(EVENTLOGRECORD) + lstrlen(lpSourceName) + 1);
+
+			// This ist the data section of the current event 
+			lpData = (LPSTR) ((LPBYTE)pevlr + pevlr->DataOffset);
+
+			// This is the text of the current event
+			lpEventStr = (LPSTR) ((LPBYTE) pevlr + pevlr->StringOffset);
+
+			// Compute the event type
+			EventTimeToSystemTime(pevlr->TimeWritten, &time);  
+
+			// Get the username that generated the event
+			GetEventUserName (pevlr , szUsername);
+
+			GetDateFormat( LOCALE_USER_DEFAULT, DATE_SHORTDATE, &time, NULL, szLocalDate, MAX_PATH );
+			GetTimeFormat( LOCALE_USER_DEFAULT, TIME_NOSECONDS, &time, NULL, szLocalTime, MAX_PATH );
+
+			GetEventCategory (lpLogName , lpSourceName , pevlr , szCategory);
+			//GetEventMessage (lpLogName , lpSourceName , pevlr , szEventText);
+
+			wsprintf (szEventID, "%u", (DWORD)(pevlr->EventID & 0xFFFF));
+			wsprintf (szCategoryID, "%u", (DWORD)(pevlr->EventCategory));
+
+			lviEventItem.mask = LVIF_IMAGE | LVIF_TEXT | LVIF_PARAM; 
+			lviEventItem.iItem = 0;
+			lviEventItem.iSubItem = 0;
+			lviEventItem.lParam = (LPARAM)pevlr;
+
+			switch(pevlr->EventType) 
+			{
+				case EVENTLOG_ERROR_TYPE: 
+					lviEventItem.pszText = "Error";
+					lviEventItem.iImage = 2;
+					break;
+				case EVENTLOG_AUDIT_FAILURE:
+					lviEventItem.pszText = "Audit Failure";
+					lviEventItem.iImage = 2;
+					break;
+				case EVENTLOG_WARNING_TYPE:
+					lviEventItem.pszText = "Warning";
+					lviEventItem.iImage = 1;
+					break;
+				case EVENTLOG_INFORMATION_TYPE:
+					lviEventItem.pszText = "Information";
+					lviEventItem.iImage = 0;
+					break;
+				case EVENTLOG_AUDIT_SUCCESS:
+					lviEventItem.pszText = "Audit Success";
+					lviEventItem.iImage = 0;
+					break;
+				case EVENTLOG_SUCCESS:
+					lviEventItem.pszText = "Success";
+					lviEventItem.iImage = 0;
+					break;
+			}
+
+			lviEventItem.iItem = ListView_InsertItem(hwndListView, &lviEventItem);
+
+			ListView_SetItemText(hwndListView, lviEventItem.iItem, 1, szLocalDate);
+			ListView_SetItemText(hwndListView, lviEventItem.iItem, 2, szLocalTime);
+			ListView_SetItemText(hwndListView, lviEventItem.iItem, 3, lpSourceName);
+			ListView_SetItemText(hwndListView, lviEventItem.iItem, 4, szCategory);
+			ListView_SetItemText(hwndListView, lviEventItem.iItem, 5, szEventID);
+			ListView_SetItemText(hwndListView, lviEventItem.iItem, 6, szUsername); //User
+			ListView_SetItemText(hwndListView, lviEventItem.iItem, 7, lpComputerName); //Computer
+			ListView_SetItemText(hwndListView, lviEventItem.iItem, 8, lpData); //Event Text
+        
+            dwRead -= pevlr->Length;
+            pevlr = (EVENTLOGRECORD *) ((LPBYTE) pevlr + pevlr->Length);
+        }
+
+		dwRecordsToRead--;
+		dwCurrentRecord++;
+
+        pevlr = (EVENTLOGRECORD *) &bBuffer;
+    }
+
+	//All events loaded
+	EndDialog(hwndDlg, 0);
+
+	wsprintf (szWindowTitle, "%s - %s Log on \\\\%s", szTitle , lpLogName , lpComputerName);
+	wsprintf (szStatusText, "%s has %d event(s)",  lpLogName , dwTotalRecords);
+
+	//Update the status bar
+	SendMessage (hwndStatus, SB_SETTEXT, (WPARAM)0, (LPARAM)szStatusText);
+
+	//Set the window title
+	SetWindowText ( hwndMainWindow , szWindowTitle);
+
+	//Resume list view redraw
+	SendMessage(hwndListView, WM_SETREDRAW, TRUE, 0);
+   
+    // Close the event log.
+    CloseEventLog(hEventLog);
+}
+
+VOID 
+Refresh (VOID)
+{
+	QueryEventMessages(
+		lpComputerName , 
+		lpSourceLogName);
+}
+
+//
+//  FUNCTION: MyRegisterClass()
+//
+//  PURPOSE: Registers the window class.
+//
+//  COMMENTS:
+//
+//    This function and its usage are only necessary if you want this code
+//    to be compatible with Win32 systems prior to the 'RegisterClassEx'
+//    function that was added to Windows 95. It is important to call this function
+//    so that the application will get 'well formed' small icons associated
+//    with it.
+//
+ATOM MyRegisterClass(HINSTANCE hInstance)
+{
+	WNDCLASSEX wcex;
+
+	wcex.cbSize = sizeof(WNDCLASSEX);
+
+	wcex.style			= CS_HREDRAW | CS_VREDRAW;
+	wcex.lpfnWndProc	= WndProc;
+	wcex.cbClsExtra		= 0;
+	wcex.cbWndExtra		= 0;
+	wcex.hInstance		= hInstance;
+	wcex.hIcon			= LoadIcon(hInstance, MAKEINTRESOURCE(IDI_EVENTVWR));
+	wcex.hCursor		= LoadCursor(NULL, IDC_ARROW);
+	wcex.hbrBackground	= (HBRUSH)(COLOR_WINDOW+1);
+	wcex.lpszMenuName	= MAKEINTRESOURCE(IDC_EVENTVWR);
+	wcex.lpszClassName	= szWindowClass;
+	wcex.hIconSm		= LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
+
+	return RegisterClassEx(&wcex);
+}
+
+//
+//   FUNCTION: InitInstance(HINSTANCE, int)
+//
+//   PURPOSE: Saves instance handle and creates main window
+//
+//   COMMENTS:
+//
+//        In this function, we save the instance handle in a global variable and
+//        create and display the main program window.
+//
+BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
+{
+	HIMAGELIST hSmall;
+	LVCOLUMN lvc = {0};
+
+	hInst = hInstance; // Store instance handle in our global variable
+
+	hwndMainWindow = CreateWindow(
+		szWindowClass, 
+		szTitle, 
+		WS_OVERLAPPEDWINDOW,
+		CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 
+		NULL, 
+		NULL, 
+		hInstance, 
+		NULL);
+
+	if (!hwndMainWindow)
+	{
+		return FALSE;
+	}
+
+	hwndStatus = CreateWindowEx( 
+            0,									// no extended styles
+            STATUSCLASSNAME,					// status bar
+            "Done.",                            // no text 
+            WS_CHILD | WS_BORDER | WS_VISIBLE,  // styles
+            0, 0, 0, 0,							// x, y, cx, cy
+            hwndMainWindow,                     // parent window
+            (HMENU)100,							// window ID
+            hInstance,                          // instance
+            NULL);								// window data
+
+    // Create our listview child window.  Note that I use WS_EX_CLIENTEDGE
+    // and WS_BORDER to create the normal "sunken" look.  Also note that
+    // LVS_EX_ styles cannot be set in CreateWindowEx().
+    hwndListView = CreateWindowEx(
+		WS_EX_CLIENTEDGE, 
+		WC_LISTVIEW, 
+		_T(""),
+        LVS_SHOWSELALWAYS | WS_CHILD | WS_VISIBLE | LVS_REPORT,
+        0, 
+		0, 
+		243, 
+		200, 
+		hwndMainWindow, 
+		NULL, 
+		hInstance, 
+		NULL);
+
+    // After the ListView is created, we can add extended list view styles.
+    (void)ListView_SetExtendedListViewStyle (hwndListView, LVS_EX_FULLROWSELECT);
+
+	// Create the ImageList
+	hSmall = ImageList_Create(
+		GetSystemMetrics(SM_CXSMICON),
+		GetSystemMetrics(SM_CYSMICON), 
+		ILC_MASK,
+		1,
+		1);
+	
+	// Add event type icons to ImageList
+	ImageList_AddIcon (hSmall, LoadIcon(hInstance, MAKEINTRESOURCE(IDI_INFORMATIONICON)));
+	ImageList_AddIcon (hSmall, LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WARNINGICON)));
+	ImageList_AddIcon (hSmall, LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ERRORICON)));
+
+	// Assign ImageList to List View
+	(void)ListView_SetImageList (hwndListView, hSmall, LVSIL_SMALL);
+
+    // Now set up the listview with its columns.
+    lvc.mask = LVCF_TEXT | LVCF_WIDTH;
+	lvc.cx = 90;
+	lvc.pszText = _T("Type");
+    (void)ListView_InsertColumn(hwndListView, 0, &lvc);
+
+	lvc.cx = 70;
+	lvc.pszText = _T("Date");
+    (void)ListView_InsertColumn(hwndListView, 1, &lvc);
+
+	lvc.cx = 70;
+    lvc.pszText = _T("Time");
+    (void)ListView_InsertColumn(hwndListView, 2, &lvc);
+
+	lvc.cx = 150;
+	lvc.pszText = _T("Source");
+    (void)ListView_InsertColumn(hwndListView, 3, &lvc);
+
+	lvc.cx = 100;
+	lvc.pszText = _T("Category");
+    (void)ListView_InsertColumn(hwndListView, 4, &lvc);
+
+	lvc.cx = 60;
+	lvc.pszText = _T("Event");
+    (void)ListView_InsertColumn(hwndListView, 5, &lvc);
+
+	lvc.cx = 120;
+	lvc.pszText = _T("User");
+    (void)ListView_InsertColumn(hwndListView, 6, &lvc);
+
+	lvc.cx = 100;
+	lvc.pszText = _T("Computer");
+    (void)ListView_InsertColumn(hwndListView, 7, &lvc);
+
+	lvc.cx = 0;
+	lvc.pszText = _T("Event Data");
+    (void)ListView_InsertColumn(hwndListView, 8, &lvc);
+
+	ShowWindow(hwndMainWindow, nCmdShow);
+	UpdateWindow(hwndMainWindow);
+
+	QueryEventMessages (
+		lpComputerName,				// Use the local computer.
+		EVENT_SOURCE_APPLICATION);	// The event log category
+
+	return TRUE;
+}
+
+//
+//  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
+//
+//  PURPOSE:  Processes messages for the main window.
+//
+//  WM_COMMAND	- process the application menu
+//  WM_PAINT	- Paint the main window
+//  WM_DESTROY	- post a quit message and return
+//
+//
+LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+	int wmId, wmEvent;
+	RECT rect;
+	NMHDR       *hdr;
+	HMENU       hMenu ;
+
+	switch (message)
+	{
+		case WM_NOTIFY :
+			switch(((LPNMHDR)lParam)->code)
+			{
+				case NM_DBLCLK :
+					hdr = (NMHDR FAR*)lParam;
+					if(hdr->hwndFrom == hwndListView)
+					{
+						LPNMITEMACTIVATE lpnmitem = (LPNMITEMACTIVATE)lParam;
+
+						if(lpnmitem->iItem != -1)
+						{
+							DialogBox (hInst, MAKEINTRESOURCE(IDD_EVENTDETAILDIALOG), hWnd, EventDetails);
+						}
+					}
+					break;
+			}
+		 break;
+	case WM_COMMAND:
+		wmId    = LOWORD(wParam);
+		wmEvent = HIWORD(wParam);
+
+		if ((wmId == ID_LOG_APPLICATION) ||
+			(wmId == ID_LOG_SYSTEM) ||
+			(wmId == ID_LOG_SECURITY))
+		{
+			hMenu = GetMenu (hWnd) ; // get the menu handle. Use it below
+
+			CheckMenuItem (hMenu, ID_LOG_APPLICATION , MF_UNCHECKED) ;
+			CheckMenuItem (hMenu, ID_LOG_SYSTEM , MF_UNCHECKED) ;
+			CheckMenuItem (hMenu, ID_LOG_SECURITY , MF_UNCHECKED) ;
+
+			if (hMenu)
+			{
+				CheckMenuItem (hMenu, wmId , MF_CHECKED) ;
+			}
+		}
+
+		// Parse the menu selections:
+		switch (wmId)
+		{
+			case ID_LOG_APPLICATION:
+				QueryEventMessages (
+					lpComputerName,				// Use the local computer.
+					EVENT_SOURCE_APPLICATION);	// The event log category
+				break;
+			case ID_LOG_SYSTEM:
+				QueryEventMessages (
+					lpComputerName,				// Use the local computer.
+					EVENT_SOURCE_SYSTEM);		// The event log category
+				break;
+			case ID_LOG_SECURITY:
+				QueryEventMessages (
+					lpComputerName,				// Use the local computer.
+					EVENT_SOURCE_SECURITY);		// The event log category
+				break;
+			case IDM_REFRESH:
+				Refresh ();
+				break;
+			case IDM_ABOUT:
+				DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
+				break;
+			case IDM_HELP:
+				MessageBox (
+					NULL ,
+					_TEXT("Help not implemented yet!") , 
+					_TEXT("Event Log") , 
+					MB_OK | MB_ICONINFORMATION);
+				break;
+			case IDM_EXIT:
+				DestroyWindow(hWnd);
+				break;
+			default:
+				return DefWindowProc(hWnd, message, wParam, lParam);
+		}
+		break;
+   case WM_SIZE:
+		{
+			//Gets the window rectangle
+			GetClientRect(hWnd, &rect);
+		
+			//Relocate the listview
+			MoveWindow(
+				hwndListView,
+				0, 
+				0, 
+				rect.right, 
+				rect.bottom - 20, 
+				1);
+
+			// Resize the statusbar;
+			SendMessage (hwndStatus, message, wParam, lParam);
+		}
+		break;
+	case WM_DESTROY:
+		PostQuitMessage(0);
+		break;
+	default:
+		return DefWindowProc(hWnd, message, wParam, lParam);
+	}
+	return 0;
+}
+
+// Message handler for about box.
+INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
+{
+	UNREFERENCED_PARAMETER(lParam);
+	switch (message)
+	{
+		case WM_INITDIALOG:
+			{
+				return (INT_PTR)TRUE;
+			}
+		case WM_COMMAND:
+			if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
+			{
+				EndDialog(hDlg, LOWORD(wParam));
+				return (INT_PTR)TRUE;
+			}
+
+			break;
+	}
+	return (INT_PTR)FALSE;
+}
+
+VOID 
+DisplayEvent (HWND hDlg)
+{
+	char szEventType[MAX_PATH];
+	char szTime[MAX_PATH];
+	char szDate[MAX_PATH];
+	char szUser[MAX_PATH];
+	char szComputer[MAX_PATH];
+	char szSource[MAX_PATH];
+	char szCategory[MAX_PATH];
+	char szEventID[MAX_PATH];
+	char szEventText[MAX_PATH*10];
+	char szEventData[MAX_PATH];
+	BOOL bEventData = FALSE;
+	LVITEM li;
+	EVENTLOGRECORD* pevlr;
+
+	// Get index of selected item
+	int iIndex = (int)SendMessage (hwndListView ,LVM_GETNEXTITEM, -1 , LVNI_SELECTED | LVNI_FOCUSED);
+
+    li.mask = LVIF_PARAM;
+    li.iItem = iIndex;
+    li.iSubItem = 0;
+
+	ListView_GetItem(hwndListView, &li);
+
+	pevlr = (EVENTLOGRECORD*)li.lParam;
+
+	if (iIndex != -1)
+	{
+		ListView_GetItemText (hwndListView , iIndex , 0 , szEventType , sizeof( szEventType ));
+		ListView_GetItemText (hwndListView , iIndex , 1 , szDate , sizeof( szDate ));
+		ListView_GetItemText (hwndListView , iIndex , 2 , szTime , sizeof( szTime ));
+		ListView_GetItemText (hwndListView , iIndex , 3 , szSource , sizeof( szSource ));
+		ListView_GetItemText (hwndListView , iIndex , 4 , szCategory , sizeof( szCategory ));
+		ListView_GetItemText (hwndListView , iIndex , 5 , szEventID , sizeof( szEventID ));
+		ListView_GetItemText (hwndListView , iIndex , 6 , szUser , sizeof( szUser ));
+		ListView_GetItemText (hwndListView , iIndex , 7 , szComputer , sizeof( szComputer ));
+		ListView_GetItemText (hwndListView , iIndex , 8 , szEventData , sizeof( szEventData ));
+
+		bEventData = !(strlen(szEventData) == 0);
+
+		GetEventMessage (lpSourceLogName , szSource , pevlr , szEventText);
+
+		EnableWindow(GetDlgItem(hDlg , IDC_BYTESRADIO) , bEventData);
+		EnableWindow(GetDlgItem(hDlg , IDC_WORDRADIO) , bEventData);
+
+		SetDlgItemText (hDlg, IDC_EVENTDATESTATIC , szDate);
+		SetDlgItemText (hDlg, IDC_EVENTTIMESTATIC , szTime);
+		SetDlgItemText (hDlg, IDC_EVENTUSERSTATIC , szUser);
+		SetDlgItemText (hDlg, IDC_EVENTSOURCESTATIC , szSource);
+		SetDlgItemText (hDlg, IDC_EVENTCOMPUTERSTATIC , szComputer);
+		SetDlgItemText (hDlg, IDC_EVENTCATEGORYSTATIC , szCategory);
+		SetDlgItemText (hDlg, IDC_EVENTIDSTATIC , szEventID);
+		SetDlgItemText (hDlg, IDC_EVENTTYPESTATIC , szEventType);
+		SetDlgItemText (hDlg, IDC_EVENTTEXTEDIT , szEventText);
+		SetDlgItemText (hDlg, IDC_EVENTDATAEDIT , szEventData);
+	}
+	else
+	{
+		MessageBox(
+			NULL,
+			"No Items in ListView",
+			"Error",
+			MB_OK | MB_ICONINFORMATION);
+	}
+}
+
+static 
+INT_PTR CALLBACK StatusMessageWindowProc(
+    IN HWND hwndDlg,
+    IN UINT uMsg,
+    IN WPARAM wParam,
+    IN LPARAM lParam)
+{
+    UNREFERENCED_PARAMETER(wParam);
+
+    switch (uMsg)
+    {
+        case WM_INITDIALOG:
+        {
+            return TRUE;
+        }
+    }
+    return FALSE;
+}
+
+// Message handler for event details box.
+INT_PTR CALLBACK EventDetails(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
+{
+	UNREFERENCED_PARAMETER(lParam);
+	switch (message)
+	{
+		case WM_INITDIALOG:
+			{
+				// Show event info on dialog box
+				DisplayEvent (hDlg);
+				return (INT_PTR)TRUE;
+			}
+
+		case WM_COMMAND:
+			if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
+			{
+				EndDialog(hDlg, LOWORD(wParam));
+				return (INT_PTR)TRUE;
+			}
+			if (LOWORD(wParam) == IDPREVIOUS)
+			{
+				SendMessage (hwndListView, WM_KEYDOWN, VK_UP, 0);
+
+				// Show event info on dialog box
+				DisplayEvent (hDlg);
+				return (INT_PTR)TRUE;
+			}
+
+			if (LOWORD(wParam) == IDNEXT)
+			{
+				SendMessage (hwndListView, WM_KEYDOWN, VK_DOWN, 0);
+
+				// Show event info on dialog box
+				DisplayEvent (hDlg);
+				return (INT_PTR)TRUE;
+			}
+
+			if (LOWORD(wParam) == IDC_BYTESRADIO)
+			{
+				return (INT_PTR)TRUE;
+			}
+
+			if (LOWORD(wParam) == IDC_WORDRADIO)
+			{
+				return (INT_PTR)TRUE;
+			}
+
+			if (LOWORD(wParam) == IDHELP)
+			{
+				MessageBox (NULL ,
+					_TEXT("Help not implemented yet!") , 
+					_TEXT("Event Log") , 
+					MB_OK | MB_ICONINFORMATION);
+				return (INT_PTR)TRUE;
+			}
+			break;
+	}
+	return (INT_PTR)FALSE;
+}

Propchange: trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.c
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.h?rev=29547&view=auto
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.h (added)
+++ trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.h Sat Oct 13 14:15:37 2007
@@ -1,0 +1,3 @@
+#pragma once
+
+#include "resource.h"

Propchange: trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.rbuild?rev=29547&view=auto
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.rbuild (added)
+++ trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.rbuild Sat Oct 13 14:15:37 2007
@@ -1,0 +1,16 @@
+<?xml version="1.0"?>
+<rbuild xmlns:xi="http://www.w3.org/2001/XInclude">
+  <module name="eventvwr" type="win32gui" installbase="system32" installname="eventvwr.exe" allowwarnings="true">
+    <include base="eventvwr">.</include>
+    <define name="__REACTOS__" />
+    <define name="__USE_W32API" />
+    <define name="_WIN32_IE">0x600</define>
+    <define name="_WIN32_WINNT">0x501</define>
+    <library>kernel32</library>
+    <library>user32</library>
+    <library>comctl32</library>
+    <library>advapi32</library>
+    <file>eventvwr.c</file>
+    <file>eventvwr.rc</file>
+  </module>
+</rbuild>

Propchange: trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.rbuild
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.rc?rev=29547&view=auto
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.rc (added)
+++ trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.rc Sat Oct 13 14:15:37 2007
@@ -1,0 +1,13 @@
+#include <windows.h>
+#include <commctrl.h>
+#include "resource.h"
+
+
+#define REACTOS_STR_FILE_DESCRIPTION  "ReactOS Event Log Viewer\0"
+#define REACTOS_STR_INTERNAL_NAME     "eventvwr\0"
+#define REACTOS_STR_ORIGINAL_FILENAME "eventvwr.exe\0"
+#include <reactos/version.rc>
+
+#include "rsrc.rc"
+
+

Propchange: trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.rc
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/reactos/base/applications/mscutils/eventvwr/lang/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Oct 13 14:15:37 2007
@@ -1,0 +1,7 @@
+GNUmakefile
+*.vcproj
+*.user
+*.cbp
+*.ncb
+*.suo
+*.sln

Added: trunk/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc?rev=29547&view=auto
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc (added)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc Sat Oct 13 14:15:37 2007
@@ -1,0 +1,211 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "windows.h"
+#undef APSTUDIO_HIDDEN_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_EVENTVWR            ICON                    "res\\eventvwr.ico"
+IDI_WARNINGICON         ICON                    "res\\warning.ico"
+IDI_INFORMATIONICON     ICON                    "res\\info.ico"
+IDI_ERRORICON           ICON                    "res\\error.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDC_EVENTVWR MENU 
+BEGIN
+    POPUP "&Log"
+    BEGIN
+        MENUITEM "&Aplication",                 ID_LOG_APPLICATION, CHECKED
+        MENUITEM "&Security",                   ID_LOG_SECURITY
+        MENUITEM "&System",                     ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "E&xit",                       IDM_EXIT
+    END
+    POPUP "&View"
+    BEGIN
+        MENUITEM "&Refresh",                    IDM_REFRESH
+    END
+    MENUITEM "&Options",                    ID_OPTIONS
+    POPUP "&Help"
+    BEGIN
+        MENUITEM "H&elp",                       IDM_HELP
+        MENUITEM SEPARATOR
+        MENUITEM "&About ...",                  IDM_ABOUT
+    END
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDC_EVENTVWR ACCELERATORS 
+BEGIN
+    "?",            IDM_ABOUT,              ASCII,  ALT
+    "/",            IDM_ABOUT,              ASCII,  ALT
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_ABOUTBOX DIALOGEX 0, 0, 230, 75
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_CAPTION | WS_SYSMENU
+CAPTION "About"
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
+BEGIN
+    ICON            IDI_EVENTVWR,IDC_MYICON,14,9,21,20
+    LTEXT           "ReactOS Event Viewer Version 1.0",IDC_STATIC,49,10,119,8,SS_NOPREFIX
+    LTEXT           "Copyright (C) 2007 Marc Piulachs (marc.piulachs at codexchange.net)",IDC_STATIC,49,20,119,22
+    DEFPUSHBUTTON   "OK",IDOK,90,48,42,16,WS_GROUP
+END
+
+IDD_PROGRESSBOX DIALOGEX 0, 0, 230, 40
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER 
+CAPTION "Wait.."
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
+BEGIN
+    LTEXT           "Loading Event Logs. Please wait ...",IDC_STATIC,49,15,119,8,SS_NOPREFIX
+END
+
+IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_CONTEXTHELP
+CAPTION "Event Detail"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON   "&Close",IDOK,12,258,50,14
+    PUSHBUTTON      "&Previous",IDPREVIOUS,78,258,50,14
+    PUSHBUTTON      "&Next",IDNEXT,144,258,50,14
+    PUSHBUTTON      "&Help",IDHELP,210,258,50,14
+    EDITTEXT        IDC_EVENTTEXTEDIT,14,81,247,108,ES_MULTILINE | ES_READONLY
+    LTEXT           "&Description:",IDC_STATIC,15,70,39,8
+    LTEXT           "Date:",IDC_STATIC,14,14,36,8
+    LTEXT           "Static",IDC_EVENTDATESTATIC,56,14,72,8
+    LTEXT           "Time:",IDC_STATIC,14,27,36,8
+    LTEXT           "Static",IDC_EVENTTIMESTATIC,56,27,72,8
+    LTEXT           "&User:",IDC_STATIC,14,41,36,8
+    LTEXT           "Static",IDC_EVENTUSERSTATIC,56,41,72,8
+    LTEXT           "&Computer:",IDC_STATIC,14,54,36,8
+    LTEXT           "Static",IDC_EVENTCOMPUTERSTATIC,56,54,72,8
+    LTEXT           "EventID :",IDC_STATIC,133,15,36,8
+    LTEXT           "Static",IDC_EVENTIDSTATIC,175,15,87,8
+    LTEXT           "Source:",IDC_STATIC,133,28,36,8
+    LTEXT           "Static",IDC_EVENTSOURCESTATIC,175,28,87,8
+    LTEXT           "Type:",IDC_STATIC,133,42,36,8
+    LTEXT           "Static",IDC_EVENTTYPESTATIC,175,42,87,8
+    LTEXT           "Category:",IDC_STATIC,133,55,36,8
+    LTEXT           "Static",IDC_EVENTCATEGORYSTATIC,175,55,87,8
+    EDITTEXT        IDC_EVENTDATAEDIT,14,204,247,44,ES_MULTILINE | ES_READONLY
+    LTEXT           "D&ata",IDC_STATIC,14,194,16,8
+    CONTROL         "&Bytes",IDC_BYTESRADIO,"Button",BS_AUTORADIOBUTTON,39,194,34,10
+    CONTROL         "&Word",IDC_WORDRADIO,"Button",BS_AUTORADIOBUTTON,77,194,33,10
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE 
+BEGIN
+    "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
+    "#include ""windows.h""\r\n"
+    "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO 
+BEGIN
+    IDD_EVENTDETAILDIALOG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 269
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 275
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE 
+BEGIN
+    IDS_APP_TITLE				"Event Viewer"
+    IDC_EVENTVWR				"EVENTVWR"
+	IDC_EVENTSTRINGIDNOTFOUND	"The description for Event ID ( %lu ) in Source ( %s ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer."
+END
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+

Propchange: trunk/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/reactos/base/applications/mscutils/eventvwr/res/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sat Oct 13 14:15:37 2007
@@ -1,0 +1,7 @@
+GNUmakefile
+*.vcproj
+*.user
+*.cbp
+*.ncb
+*.suo
+*.sln

Added: trunk/reactos/base/applications/mscutils/eventvwr/res/error.ico
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/eventvwr/res/error.ico?rev=29547&view=auto
==============================================================================
Binary file - no diff available.

Propchange: trunk/reactos/base/applications/mscutils/eventvwr/res/error.ico
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: trunk/reactos/base/applications/mscutils/eventvwr/res/eventvwr.ico
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/eventvwr/res/eventvwr.ico?rev=29547&view=auto
==============================================================================
Binary file - no diff available.

Propchange: trunk/reactos/base/applications/mscutils/eventvwr/res/eventvwr.ico
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: trunk/reactos/base/applications/mscutils/eventvwr/res/info.ico
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/eventvwr/res/info.ico?rev=29547&view=auto
==============================================================================
Binary file - no diff available.

Propchange: trunk/reactos/base/applications/mscutils/eventvwr/res/info.ico
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: trunk/reactos/base/applications/mscutils/eventvwr/res/warning.ico
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/eventvwr/res/warning.ico?rev=29547&view=auto
==============================================================================
Binary file - no diff available.

Propchange: trunk/reactos/base/applications/mscutils/eventvwr/res/warning.ico
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: trunk/reactos/base/applications/mscutils/eventvwr/resource.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/eventvwr/resource.h?rev=29547&view=auto
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/resource.h (added)
+++ trunk/reactos/base/applications/mscutils/eventvwr/resource.h Sat Oct 13 14:15:37 2007
@@ -1,0 +1,62 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by eventvwr.rc
+//
+#define IDC_MYICON                      2
+#define IDNEXT                          3
+#define IDHELP							4
+#define IDD_EVENTVWR_DIALOG             102
+#define IDD_PROGRESSBOX					150
+#define IDS_APP_TITLE                   103
+#define IDD_ABOUTBOX                    103
+#define IDM_ABOUT                       104
+#define IDM_EXIT                        105
+#define IDI_EVENTVWR                    107
+#define IDI_SMALL                       108
+#define IDC_EVENTVWR                    109
+#define IDC_EVENTSTRINGIDNOTFOUND       209
+#define IDC_PROCESSPROGRESS				250
+#define IDR_MAINFRAME                   128
+#define IDI_WARNINGICON                 129
+#define IDI_INFORMATIONICON             130
+#define IDI_ERRORICON                   131
+#define IDD_EVENTDETAILDIALOG           132
+#define IDC_EVENTTEXTEDIT               1000
+#define IDC_EVENTDATESTATIC             1001
+#define IDC_EVENTTIMESTATIC             1002
+#define IDC_EVENTUSERSTATIC             1003
+#define IDC_EVENTCOMPUTERSTATIC         1004
+#define IDC_EVENTIDSTATIC               1005
+#define IDC_EVENTSOURCESTATIC           1006
+#define IDC_EVENTTYPESTATIC             1007
+#define IDC_EVENTCATEGORYSTATIC         1008
+#define IDPREVIOUS                      1009
+#define IDC_EVENTTEXTEDIT2              1010
+#define IDC_BYTESRADIO                  1011
+#define IDC_WORDRADIO                   1013
+#define IDC_EVENTDATAEDIT				1014
+#define ID_LOG_APLICATION               32771
+#define ID_LOG_SECURITY                 32772
+#define ID_LOG_SYSTEM                   32773
+#define ID_LOG_APPLICATION              32774
+#define ID_HELP_HELP                    32775
+#define ID_HELP                         32776
+#define ID_OPTIONS                      32777
+#define ID_VIEW                         32778
+#define IDM_HELP                        32779
+#define ID_VIEW_REFRESH                 32780
+#define ID_REFRESH                      32781
+#define IDM_REFRESH                     32782
+#define IDC_STATIC                      -1
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NO_MFC                     1
+#define _APS_NEXT_RESOURCE_VALUE        133
+#define _APS_NEXT_COMMAND_VALUE         32783
+#define _APS_NEXT_CONTROL_VALUE         1012
+#define _APS_NEXT_SYMED_VALUE           110
+#endif
+#endif

Propchange: trunk/reactos/base/applications/mscutils/eventvwr/resource.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: trunk/reactos/base/applications/mscutils/eventvwr/rsrc.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils/eventvwr/rsrc.rc?rev=29547&view=auto
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/rsrc.rc (added)
+++ trunk/reactos/base/applications/mscutils/eventvwr/rsrc.rc Sat Oct 13 14:15:37 2007
@@ -1,0 +1,6 @@
+#include <windows.h>
+#include "resource.h"
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
+#include "lang/en-US.rc"

Propchange: trunk/reactos/base/applications/mscutils/eventvwr/rsrc.rc
------------------------------------------------------------------------------
    svn:eol-style = native




More information about the Ros-diffs mailing list