Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: WNetGetLastError

  Alt 30. Nov 2005, 09:08
Ich habe gerade noch etwas Forschungsarbeit betrieben...
Die Meldung ist in kernel32.dll abgelegt.
Mit einem (guten) Resourceneditor (z.B. http://www.wilsonc.demon.co.uk/d7resourceexplorer.htm) kann man sich die "MessageTable" von kernel32.dll anzeigen lassen.
Das Problem scheint daran zu liegen, dass SysErrorMessage max 255 Zeichen liefen kann.
Folgendes klappt aber:
Delphi-Quellcode:
function ErrorMessageFromModule(ErrorCode: Integer; hm:HModule): string;
var
   Len: Integer;
begin
   SetLength(Result, 2048-16); // das sollte in 2kb gerade noch reinpassen
   Len := FormatMessage(FORMAT_MESSAGE_FROM_HMODULE (*or
    FORMAT_MESSAGE_ARGUMENT_ARRAY*)
 or FORMAT_MESSAGE_IGNORE_INSERTS, Pointer(hm), ErrorCode, 0, PChar(Result),
    Length(Result), nil);
   while (Len > 0) and (Result[Len - 1] in [#0..#32, '.']) do Dec(Len);
   SetLength(Result, Len);
end;

ShowMessage(ErrorMessageFromModule(1219, GetModuleHandle('kernel32.dll')));
Andreas
  Mit Zitat antworten Zitat