Einzelnen Beitrag anzeigen

Benutzerbild von Rakshasa
Rakshasa

Registriert seit: 1. Nov 2003
182 Beiträge
 
Delphi 2007 Professional
 
#7

Re: String aus .EXE und .DLL extrahieren?

  Alt 27. Mär 2007, 01:18
Zitat von NicoDE:
Zitat von Rakshasa:
WOW64 wurde berücksichtigt
Dann verstehe ich die Verwendung von LoadLibrary nicht. Wenn die FileSystem-Redirection für den Thread deaktiviert wurde und es sich um eine 64-Bit-Bibliothek handelt (und ich mal davon ausgehe, dass du keinen 64-Bit-Pascal-Compiler verwendest), dann kannst du nur LoadLibaryEx(..., LOAD_LIBRARY_AS_DATAFILE) verwenden.
// noch ein Versuch, nachdem mein Post gelöscht wurde?!

Also: An LoadLibraryEx habe ich überhaupt nicht gedacht... immer dieses 64-Bit ...
Mit folgendem Code funktioniert es einwandfrei:

Code:
function GetStringFromDLL(const lib: string; id: LongWord): string;
var
  hLib: THandle;
  buf: array [Byte] of Char;
begin
  ChangeFSRedir(true); // Abstellen der 64-Bit-Redirection
  hLib := LoadLibraryEx(PChar(lib), 0, LOAD_LIBRARY_AS_DATAFILE);
  if LongBool(hLib) then begin
  try
    SetString(Result, buf, LoadString(hLib, id, @buf[0], SizeOf(buf)));
  finally
    FreeLibrary(hLib);
  end;
  end;
 ChangeFSRedir(false); // Zurückstellen der 64-Bit-Redirection
end;
Der Aufruf:

Code:
GetStringFromDLL('C:\Windows\system32\wudfsvc.dll', 1000);
Danke an alle!!!
  Mit Zitat antworten Zitat