Author: tkreuzer
Date: Sun Jun  1 11:00:09 2014
New Revision: 63525
URL: 
http://svn.reactos.org/svn/reactos?rev=63525&view=rev
Log:
[EVENTEVWR]
* when displaying message boxes, set the parent to the main window/details dialog instead
of using NULL.
*add a function for showing the last Win32 error and replace two message boxes with a call
to it.
*add the ability to save event logs to a file.
*add the ability to clear event logs.
*In QueryEventMessages(), assign lpSourceLogName and lpComputerName after the call to
OpenEventLog, not before.
Patch by Ricardo Hanke
CORE-7863 #comment Comitted in r63525, thanks
Modified:
    trunk/reactos/base/applications/mscutils/eventvwr/CMakeLists.txt
    trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.c
    trunk/reactos/base/applications/mscutils/eventvwr/lang/bg-BG.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/de-DE.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/el-GR.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/es-ES.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/fr-FR.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/he-IL.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/it-IT.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/ja-JP.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/ko-KR.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/no-NO.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/pt-BR.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/ro-RO.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/ru-RU.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/sk-SK.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/sq-AL.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/sv-SE.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/tr-TR.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/uk-UA.rc
    trunk/reactos/base/applications/mscutils/eventvwr/lang/zh-CN.rc
    trunk/reactos/base/applications/mscutils/eventvwr/resource.h
Modified: trunk/reactos/base/applications/mscutils/eventvwr/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/CMakeLists.txt    [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/CMakeLists.txt    [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -1,7 +1,7 @@
 add_executable(eventvwr eventvwr.c eventvwr.rc)
 set_module_type(eventvwr win32gui UNICODE)
-add_importlibs(eventvwr user32 comctl32 advapi32 msvcrt kernel32)
+add_importlibs(eventvwr user32 comctl32 comdlg32 advapi32 msvcrt kernel32)
 if(MSVC)
     add_importlibs(eventvwr ntdll)
 endif()
Modified: trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.c        [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.c        [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -28,9 +28,11 @@
 #include <windef.h>
 #include <winbase.h>
 #include <winuser.h>
+#include <wingdi.h>
 #include <winnls.h>
 #include <winreg.h>
 #include <commctrl.h>
+#include <commdlg.h>
 #include "resource.h"
@@ -42,7 +44,7 @@
 static const LPWSTR EVENT_SOURCE_APPLICATION = L"Application";
 static const LPWSTR EVENT_SOURCE_SECURITY    = L"Security";
 static const LPWSTR EVENT_SOURCE_SYSTEM      = L"System";
-static const WCHAR szWindowClass[]          = L"EVENTVWR"; /* the main window
class name*/
+static const WCHAR szWindowClass[]           = L"EVENTVWR"; /* the main window
class name*/
 //MessageFile message buffer size
 #define EVENT_MESSAGE_EVENTTEXT_BUFFER  1024*10
@@ -58,12 +60,15 @@
 HINSTANCE hInst;                            /* current instance */
 WCHAR szTitle[MAX_LOADSTRING];              /* The title bar text */
 WCHAR szTitleTemplate[MAX_LOADSTRING];      /* The logged-on title bar text */
+WCHAR szSaveFilter[MAX_LOADSTRING];         /* Filter Mask for the save Dialog */
 HWND hwndMainWindow;                        /* Main window */
 HWND hwndListView;                          /* ListView control */
 HWND hwndStatus;                            /* Status bar */
+HMENU hMainMenu;                            /* The application's main menu */
 WCHAR szStatusBarTemplate[MAX_LOADSTRING];  /* The status bar text */
 PEVENTLOGRECORD *g_RecordPtrs = NULL;
 DWORD g_TotalRecords = 0;
+OPENFILENAMEW sfn;
 LPWSTR lpSourceLogName = NULL;
 LPWSTR lpComputerName  = NULL;
@@ -135,6 +140,25 @@
         HeapFree(GetProcessHeap(), 0, g_RecordPtrs[iIndex]);
     HeapFree(GetProcessHeap(), 0, g_RecordPtrs);
     g_RecordPtrs = NULL;
+}
+
+VOID
+ShowLastWin32Error(VOID)
+{
+    DWORD dwError;
+    LPWSTR lpMessageBuffer;
+
+    dwError = GetLastError();
+    FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+                   NULL,
+                   dwError,
+                   0,
+                   (LPWSTR)&lpMessageBuffer,
+                   0,
+                   NULL);
+
+    MessageBoxW(hwndMainWindow, lpMessageBuffer, szTitle, MB_OK | MB_ICONERROR);
+    LocalFree(lpMessageBuffer);
 }
 VOID
@@ -219,10 +243,7 @@
     }
     else
     {
-        MessageBoxW(NULL,
-                   L"Registry access failed!",
-                   L"Event Log",
-                   MB_OK | MB_ICONINFORMATION);
+        ShowLastWin32Error();
     }
     if (hSourceKey != NULL)
@@ -524,20 +545,17 @@
     dwFlags = EVENTLOG_FORWARDS_READ | EVENTLOG_SEQUENTIAL_READ;
-    lpSourceLogName = lpLogName;
-    lpComputerName = lpMachineName;
-
     /* Open the event log. */
     hEventLog = OpenEventLogW(lpMachineName,
                              lpLogName);
     if (hEventLog == NULL)
     {
-        MessageBoxW(NULL,
-                   L"Could not open the event log.",
-                   L"Event Log",
-                   MB_OK | MB_ICONINFORMATION);
+        ShowLastWin32Error();
         return FALSE;
     }
+
+    lpSourceLogName = lpLogName;
+    lpComputerName = lpMachineName;
     /* Disable listview redraw */
     SendMessage(hwndListView, WM_SETREDRAW, FALSE, 0);
@@ -551,6 +569,17 @@
     /* Get the total number of event log records. */
     GetNumberOfEventLogRecords (hEventLog , &dwTotalRecords);
     g_TotalRecords = dwTotalRecords;
+
+    if (dwTotalRecords > 0)
+    {
+        EnableMenuItem(hMainMenu, ID_CLEAR_EVENTS, MF_BYCOMMAND | MF_ENABLED);
+        EnableMenuItem(hMainMenu, ID_SAVE_PROTOCOL, MF_BYCOMMAND | MF_ENABLED);
+    }
+    else
+    {
+        EnableMenuItem(hMainMenu, ID_CLEAR_EVENTS, MF_BYCOMMAND | MF_GRAYED);
+        EnableMenuItem(hMainMenu, ID_SAVE_PROTOCOL, MF_BYCOMMAND | MF_GRAYED);
+    }
     g_RecordPtrs = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwTotalRecords *
sizeof(PVOID));
@@ -704,6 +733,97 @@
     SendMessageW(hwndListView, WM_SETREDRAW, TRUE, 0);
     // Close the event log.
+    CloseEventLog(hEventLog);
+
+    return TRUE;
+}
+
+
+VOID
+SaveProtocol(VOID)
+{
+    HANDLE hEventLog;
+    WCHAR szFileName[MAX_PATH];
+
+    ZeroMemory(szFileName, sizeof(szFileName));
+
+    sfn.lpstrFile = szFileName;
+    sfn.nMaxFile  = MAX_PATH;
+
+    if (!GetSaveFileNameW(&sfn))
+    {
+        return;
+    }
+
+    hEventLog = OpenEventLogW(lpComputerName, lpSourceLogName);
+    if (!hEventLog)
+    {
+        ShowLastWin32Error();
+        return;
+    }
+
+    if (!BackupEventLogW(hEventLog, szFileName))
+    {
+        ShowLastWin32Error();
+    }
+
+    CloseEventLog(hEventLog);
+}
+
+
+BOOL
+ClearEvents(VOID)
+{
+    HANDLE hEventLog;
+    WCHAR szFileName[MAX_PATH];
+    WCHAR szMessage[MAX_LOADSTRING];
+
+    ZeroMemory(szFileName, sizeof(szFileName));
+    ZeroMemory(szMessage, sizeof(szMessage));
+
+    LoadStringW(hInst, IDS_CLEAREVENTS_MSG, szMessage, MAX_LOADSTRING);
+
+    sfn.lpstrFile = szFileName;
+    sfn.nMaxFile  = MAX_PATH;
+
+    switch (MessageBoxW(hwndMainWindow, szMessage, szTitle, MB_YESNOCANCEL |
MB_ICONINFORMATION))
+    {
+        case IDCANCEL:
+        {
+            return FALSE;
+            break;
+        }
+
+        case IDNO:
+        {
+            sfn.lpstrFile = NULL;
+            break;
+        }
+
+        case IDYES:
+        {
+            if (!GetSaveFileNameW(&sfn))
+            {
+                return FALSE;
+            }
+            break;
+        }
+    }
+
+    hEventLog = OpenEventLogW(lpComputerName, lpSourceLogName);
+    if (!hEventLog)
+    {
+        ShowLastWin32Error();
+        return FALSE;
+    }
+
+    if (!ClearEventLogW(hEventLog, sfn.lpstrFile))
+    {
+        ShowLastWin32Error();
+        CloseEventLog(hEventLog);
+        return FALSE;
+    }
+
     CloseEventLog(hEventLog);
     return TRUE;
@@ -905,6 +1025,20 @@
     lvc.pszText = szTemp;
     (void)ListView_InsertColumn(hwndListView, 8, &lvc);
+    // Initialize the save Dialog
+    ZeroMemory(&sfn, sizeof(sfn));
+    ZeroMemory(szSaveFilter, sizeof(szSaveFilter));
+
+    LoadStringW(hInst, IDS_SAVE_FILTER, szSaveFilter, MAX_LOADSTRING);
+
+    sfn.lStructSize     = sizeof(sfn);
+    sfn.hwndOwner       = hwndMainWindow;
+    sfn.hInstance       = hInstance;
+    sfn.lpstrFilter     = szSaveFilter;
+    sfn.lpstrInitialDir = NULL;
+    sfn.Flags           = OFN_HIDEREADONLY | OFN_SHAREAWARE;
+    sfn.lpstrDefExt     = NULL;
+
     ShowWindow(hwndMainWindow, nCmdShow);
     UpdateWindow(hwndMainWindow);
@@ -934,6 +1068,7 @@
     switch (message)
     {
         case WM_CREATE:
+            hMainMenu = GetMenu(hWnd);
             CheckMenuRadioItem(GetMenu(hWnd),
                                ID_LOG_APPLICATION,
                                ID_LOG_SYSTEM,
@@ -1002,6 +1137,17 @@
                     }
                     break;
+                case ID_SAVE_PROTOCOL:
+                    SaveProtocol();
+                    break;
+
+                case ID_CLEAR_EVENTS:
+                    if (ClearEvents())
+                    {
+                        Refresh();
+                    }
+                    break;
+
                 case IDM_REFRESH:
                     Refresh();
                     break;
@@ -1011,7 +1157,7 @@
                     break;
                 case IDM_HELP:
-                    MessageBoxW(NULL,
+                    MessageBoxW(hwndMainWindow,
                                L"Help not implemented yet!",
                                L"Event Log",
                                MB_OK | MB_ICONINFORMATION);
@@ -1221,7 +1367,7 @@
                     return (INT_PTR)TRUE;
                 case IDHELP:
-                    MessageBoxW(NULL,
+                    MessageBoxW(hDlg,
                                L"Help not implemented yet!",
                                L"Event Log",
                                MB_OK | MB_ICONINFORMATION);
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/bg-BG.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/bg-BG.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/bg-BG.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -7,6 +7,10 @@
         MENUITEM "&ÐÑиложение", ID_LOG_APPLICATION
         MENUITEM "&СигÑÑноÑÑ", ID_LOG_SECURITY
         MENUITEM "&УÑедба", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "Ðз&Ñ
од", IDM_EXIT
     END
@@ -95,6 +99,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "Audit Failure"
     IDS_EVENTLOG_SUCCESS "Success"
     IDS_EVENTLOG_UNKNOWN_TYPE "Unknown Event"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/de-DE.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/de-DE.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/de-DE.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -9,6 +9,10 @@
         MENUITEM "&Anwendung", ID_LOG_APPLICATION
         MENUITEM "&Sicherheit", ID_LOG_SECURITY
         MENUITEM "&System", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Protokoll s&peichern...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "Alle E&reignisse löschen", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "B&eenden", IDM_EXIT
     END
@@ -97,6 +101,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "Audit Fehlgeschlagen"
     IDS_EVENTLOG_SUCCESS "Erfolgreich"
     IDS_EVENTLOG_UNKNOWN_TYPE "Unbekanntes Ereignis"
+    IDS_CLEAREVENTS_MSG "Möchten Sie dieses Protokoll vor dem Löschen
speichern?"
+    IDS_SAVE_FILTER "Ereignisprotokoll (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/el-GR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/el-GR.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/el-GR.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -9,6 +9,10 @@
         MENUITEM "&ÎÏαÏμογή", ID_LOG_APPLICATION
         MENUITEM "&ÎÏÏάλεια", ID_LOG_SECURITY
         MENUITEM "&ΣÏÏÏημα", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "Î&ξοδοÏ", IDM_EXIT
     END
@@ -97,6 +101,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "Audit Failure"
     IDS_EVENTLOG_SUCCESS "ÎÏιÏÏ
Ïία"
     IDS_EVENTLOG_UNKNOWN_TYPE "ÎγνÏÏÏο ÏÏ
μβάν"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/en-US.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -15,6 +15,10 @@
         MENUITEM "&Application", ID_LOG_APPLICATION
         MENUITEM "&Security", ID_LOG_SECURITY
         MENUITEM "&System", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "E&xit", IDM_EXIT
     END
@@ -103,6 +107,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "Audit Failure"
     IDS_EVENTLOG_SUCCESS "Success"
     IDS_EVENTLOG_UNKNOWN_TYPE "Unknown Event"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/es-ES.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/es-ES.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/es-ES.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -9,6 +9,10 @@
         MENUITEM "&Aplicación", ID_LOG_APPLICATION
         MENUITEM "&Seguridad", ID_LOG_SECURITY
         MENUITEM "&Sistema", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "S&alir", IDM_EXIT
     END
@@ -97,6 +101,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "Auditoria Fallida"
     IDS_EVENTLOG_SUCCESS "Acierto"
     IDS_EVENTLOG_UNKNOWN_TYPE "Evento Desconocido"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/fr-FR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/fr-FR.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/fr-FR.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -9,6 +9,10 @@
         MENUITEM "&Application", ID_LOG_APPLICATION
         MENUITEM "&Sécurité", ID_LOG_SECURITY
         MENUITEM "&Système", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "Quitter", IDM_EXIT
     END
@@ -97,6 +101,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "Ãchec de l'audit"
     IDS_EVENTLOG_SUCCESS "Succès"
     IDS_EVENTLOG_UNKNOWN_TYPE "Ãvénement Inconnu"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/he-IL.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/he-IL.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/he-IL.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -9,6 +9,10 @@
         MENUITEM "××ש××", ID_LOG_APPLICATION
         MENUITEM "×××××", ID_LOG_SECURITY
         MENUITEM "×ער×ת", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "×צ×××", IDM_EXIT
     END
@@ -97,6 +101,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "Audit Failure"
     IDS_EVENTLOG_SUCCESS "×צ×××"
     IDS_EVENTLOG_UNKNOWN_TYPE "××ר××¢ ×× ××××¢"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/it-IT.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/it-IT.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/it-IT.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -9,6 +9,10 @@
         MENUITEM "&Applicazioni", ID_LOG_APPLICATION
         MENUITEM "&Sicurezza", ID_LOG_SECURITY
         MENUITEM "&Sistema", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "E&sci", IDM_EXIT
     END
@@ -97,6 +101,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "Audit fallita"
     IDS_EVENTLOG_SUCCESS "Successo"
     IDS_EVENTLOG_UNKNOWN_TYPE "Evento sconosciuto"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/ja-JP.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/ja-JP.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/ja-JP.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -9,6 +9,10 @@
         MENUITEM "ã¢ããªã±ã¼ã·ã§ã³(&A)", ID_LOG_APPLICATION
         MENUITEM "ã»ãã¥ãªãã£(&S)", ID_LOG_SECURITY
         MENUITEM "ã·ã¹ãã (&S)", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "çµäº(&X)", IDM_EXIT
     END
@@ -97,6 +101,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "失æã®ç£æ»"
     IDS_EVENTLOG_SUCCESS "æå"
     IDS_EVENTLOG_UNKNOWN_TYPE "䏿ãªã¤ãã³ã"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/ko-KR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/ko-KR.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/ko-KR.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -9,6 +9,10 @@
         MENUITEM "ì í리ì¼ì´ì
(&A)", ID_LOG_APPLICATION
         MENUITEM "ë³´ì(&S)", ID_LOG_SECURITY
         MENUITEM "ìì¤í
(&S)", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "ì¢
ë£(&X)", IDM_EXIT
     END
@@ -97,6 +101,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "ê°ì¬ ì¤í¨"
     IDS_EVENTLOG_SUCCESS "ì±ê³µ"
     IDS_EVENTLOG_UNKNOWN_TYPE "ìë ¤ì§ì§ ìì ì´ë²¤í¸"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/no-NO.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/no-NO.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/no-NO.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -7,6 +7,10 @@
         MENUITEM "&Applikasjon", ID_LOG_APPLICATION
         MENUITEM "&Sikkerhet", ID_LOG_SECURITY
         MENUITEM "&System", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "A&vslutt", IDM_EXIT
     END
@@ -95,6 +99,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "Revisjon misslykkes"
     IDS_EVENTLOG_SUCCESS "Suksess"
     IDS_EVENTLOG_UNKNOWN_TYPE "Ukjent hendelse"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/pl-PL.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -9,6 +9,10 @@
         MENUITEM "&Aplikacja", ID_LOG_APPLICATION
         MENUITEM "&Zabezpieczenia", ID_LOG_SECURITY
         MENUITEM "&System", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "&WyjÅcie", IDM_EXIT
     END
@@ -97,6 +101,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "Nieudany Audyt"
     IDS_EVENTLOG_SUCCESS "Sukces"
     IDS_EVENTLOG_UNKNOWN_TYPE "Zdarzenie nieznane"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/pt-BR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/pt-BR.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/pt-BR.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -9,6 +9,10 @@
         MENUITEM "&Aplicativo", ID_LOG_APPLICATION
         MENUITEM "S&egurança", ID_LOG_SECURITY
         MENUITEM "&Sistema", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "&Sair", IDM_EXIT
     END
@@ -97,6 +101,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "Falha na Auditoria"
     IDS_EVENTLOG_SUCCESS "Sucesso"
     IDS_EVENTLOG_UNKNOWN_TYPE "Evento Desconhecido"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/ro-RO.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/ro-RO.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/ro-RO.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -9,6 +9,10 @@
         MENUITEM "&AplicaÈie", ID_LOG_APPLICATION
         MENUITEM "Se&curitate", ID_LOG_SECURITY
         MENUITEM "&Sistem", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "I&eÈire", IDM_EXIT
     END
@@ -97,6 +101,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "EÈec audit"
     IDS_EVENTLOG_SUCCESS "Succes"
     IDS_EVENTLOG_UNKNOWN_TYPE "Eveniment necunoscut"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/ru-RU.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/ru-RU.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/ru-RU.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -9,6 +9,10 @@
         MENUITEM "&ÐÑиложений", ID_LOG_APPLICATION
         MENUITEM "&ÐезопаÑноÑÑи", ID_LOG_SECURITY
         MENUITEM "&СиÑÑемÑ", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "Ð&ÑÑ
од", IDM_EXIT
     END
@@ -97,6 +101,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "ÐÑÐ´Ð¸Ñ Ð¾Ñказов"
     IDS_EVENTLOG_SUCCESS "УÑпеÑ
"
     IDS_EVENTLOG_UNKNOWN_TYPE "ÐеизвеÑÑное ÑобÑÑие"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/sk-SK.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/sk-SK.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/sk-SK.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -12,6 +12,10 @@
         MENUITEM "&Application", ID_LOG_APPLICATION
         MENUITEM "&Security", ID_LOG_SECURITY
         MENUITEM "&System", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "&SkonÄiÅ¥", IDM_EXIT
     END
@@ -100,6 +104,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "Kontrola zlyhala"
     IDS_EVENTLOG_SUCCESS "Ãspech" //Success
     IDS_EVENTLOG_UNKNOWN_TYPE "Neznáma udalosť"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/sq-AL.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/sq-AL.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/sq-AL.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -15,6 +15,10 @@
         MENUITEM "&Aplikacion", ID_LOG_APPLICATION
         MENUITEM "&Siguri", ID_LOG_SECURITY
         MENUITEM "&Sistemi", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "Dil", IDM_EXIT
     END
@@ -103,6 +107,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "Audit dështoj"
     IDS_EVENTLOG_SUCCESS "Sukses"
     IDS_EVENTLOG_UNKNOWN_TYPE "Ngjraje e panjohur"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/sv-SE.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/sv-SE.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/sv-SE.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -9,6 +9,10 @@
         MENUITEM "&Applikation", ID_LOG_APPLICATION
         MENUITEM "&Säkerhet", ID_LOG_SECURITY
         MENUITEM "&System", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "A&vsluta", IDM_EXIT
     END
@@ -97,6 +101,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "Revision misslyckades"
     IDS_EVENTLOG_SUCCESS "Uppgift lyckades"
     IDS_EVENTLOG_UNKNOWN_TYPE "Okänd händelse"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/tr-TR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/tr-TR.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/tr-TR.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -15,6 +15,10 @@
         MENUITEM "&Uygulama", ID_LOG_APPLICATION
         MENUITEM "&Güvenlik", ID_LOG_SECURITY
         MENUITEM "&Dizge", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "&ÃıkıÅ", IDM_EXIT
     END
@@ -103,6 +107,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "BaÅarısızlık Denetimi"
     IDS_EVENTLOG_SUCCESS "BaÅarı"
     IDS_EVENTLOG_UNKNOWN_TYPE "Bilinmeyen Olay"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/uk-UA.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/uk-UA.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/uk-UA.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -9,6 +9,10 @@
         MENUITEM "&ÐÑогÑама", ID_LOG_APPLICATION
         MENUITEM "&ÐаÑ
иÑÑ", ID_LOG_SECURITY
         MENUITEM "&СиÑÑема", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "Ð&иÑ
Ñд", IDM_EXIT
     END
@@ -97,6 +101,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "ÐÑÐ´Ð¸Ñ Ð²Ñдмов"
     IDS_EVENTLOG_SUCCESS "УÑпÑÑ
"
     IDS_EVENTLOG_UNKNOWN_TYPE "ÐевÑдома подÑÑ"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/lang/zh-CN.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/lang/zh-CN.rc     [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/lang/zh-CN.rc     [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -9,6 +9,10 @@
         MENUITEM "åºç¨ç¨åºæ¥å¿(&A)", ID_LOG_APPLICATION
         MENUITEM "å®å
¨æ¥å¿(&S)", ID_LOG_SECURITY
         MENUITEM "ç³»ç»æ¥å¿(&Y)", ID_LOG_SYSTEM
+        MENUITEM SEPARATOR
+        MENUITEM "Save &Protocol...", ID_SAVE_PROTOCOL, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "C&lear all Events", ID_CLEAR_EVENTS, GRAYED
         MENUITEM SEPARATOR
         MENUITEM "éåº(&X)", IDM_EXIT
     END
@@ -97,6 +101,8 @@
     IDS_EVENTLOG_AUDIT_FAILURE "审核失败"
     IDS_EVENTLOG_SUCCESS "æå"
     IDS_EVENTLOG_UNKNOWN_TYPE "æªç¥äºä»¶"
+    IDS_CLEAREVENTS_MSG "Do you want to save this event log before clearing
it?"
+    IDS_SAVE_FILTER "Event Log (*.evt)\0*.evt\0"
 END
 STRINGTABLE
Modified: trunk/reactos/base/applications/mscutils/eventvwr/resource.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/resource.h        [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/resource.h        [iso-8859-1] Sun
Jun  1 11:00:09 2014
@@ -46,6 +46,8 @@
 #define ID_VIEW_REFRESH    32780
 #define ID_REFRESH         32781
 #define IDM_REFRESH        32782
+#define ID_CLEAR_EVENTS    32783
+#define ID_SAVE_PROTOCOL   32784
 /* String IDs */
 #define IDS_APP_TITLE                 103
@@ -59,6 +61,8 @@
 #define IDS_EVENTLOG_AUDIT_FAILURE    255
 #define IDS_EVENTLOG_SUCCESS          256
 #define IDS_EVENTLOG_UNKNOWN_TYPE     257
+#define IDS_CLEAREVENTS_MSG           258
+#define IDS_SAVE_FILTER               259
 #define IDS_COLUMNTYPE      300
 #define IDS_COLUMNDATE      301