* 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
svn path=/trunk/; revision=63525
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()
#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"
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
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;
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
EventTimeToSystemTime(DWORD EventTime,
SYSTEMTIME *pSystemTime)
}
else
{
- MessageBoxW(NULL,
- L"Registry access failed!",
- L"Event Log",
- MB_OK | MB_ICONINFORMATION);
+ ShowLastWin32Error();
}
if (hSourceKey != NULL)
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);
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));
/* If we have at least 1000 records show the waiting dialog */
}
+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;
+}
+
+
VOID
Refresh(VOID)
{
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);
switch (message)
{
case WM_CREATE:
+ hMainMenu = GetMenu(hWnd);
CheckMenuRadioItem(GetMenu(hWnd),
ID_LOG_APPLICATION,
ID_LOG_SYSTEM,
}
break;
+ case ID_SAVE_PROTOCOL:
+ SaveProtocol();
+ break;
+
+ case ID_CLEAR_EVENTS:
+ if (ClearEvents())
+ {
+ Refresh();
+ }
+ break;
+
case IDM_REFRESH:
Refresh();
break;
break;
case IDM_HELP:
- MessageBoxW(NULL,
+ MessageBoxW(hwndMainWindow,
L"Help not implemented yet!",
L"Event Log",
MB_OK | MB_ICONINFORMATION);
return (INT_PTR)TRUE;
case IDHELP:
- MessageBoxW(NULL,
+ MessageBoxW(hDlg,
L"Help not implemented yet!",
L"Event Log",
MB_OK | MB_ICONINFORMATION);
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
POPUP "Из&глед"
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
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
POPUP "&Ansicht"
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
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
POPUP "&Εμφάνιση"
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
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
POPUP "&View"
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
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
POPUP "&Ver"
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
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
POPUP "Affichage"
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
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
POPUP "תצוגה"
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
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
POPUP "&Vista"
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
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
POPUP "表示(&V)"
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
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
POPUP "보기(&V)"
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
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
POPUP "&Vis"
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
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
POPUP "&Podgląd"
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
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
POPUP "&Visualizar"
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
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
POPUP "&Afișare"
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
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
POPUP "&Вид"
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
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
POPUP "&Zobraziť"
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
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
POPUP "&Vëzhgo"
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
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
POPUP "&Visa"
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
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
POPUP "&Görünüm"
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
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
POPUP "&Вигляд"
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
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
POPUP "查看(&V)"
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
#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
#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