Hallo zusammen!
Ich bin gerade dabei eine Prozedur zu schreiben, die Windows Event Logs ausliest und die Records anschliessend schön aufbereitet in HTML ausgeben soll.
Um die kompletten Messagestrings für jeden Event zu erhalten benötigt man ja diverse Msg-dlls aus dem System32 Ordner.
Nun will ich mit der win-api function FORMAT_MESSAGE die Strings erzeugen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| hModule := LoadLibraryEx(MessageFileFN, 0, LOAD_LIBRARY_AS_DATAFILE);
if hModule <> 0 then
NumCharsMsg := FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_FROM_HMODULE or FORMAT_MESSAGE_ARGUMENT_ARRAY, Pointer(hModule), EventID, 0, Pchar(@MsgBuf), 0, ArgsBuffer); |
Das funktioniert auch solange die EventIds zweistellig sind. Aber alle größeren EventIds (und die meisten sind 4-stellig) liefert mir FormatMessage immer 0 zurück und ei GetLastError bringt Fehler Nummer 317, welcher folgendes bedeutet:
The system cannot find message text for message number 0x%1 in the message file for %2. ERROR_MR_MID_NOT_FOUND
Vielen dank,
Gruss,
Jim Knopf