![]() |
Re: Pfad+Name der aktuellen DLL aus DLL heraus ermitteln...
Zitat:
|
Re: Pfad+Name der aktuellen DLL aus DLL heraus ermitteln...
ok, ich hab das jetzt mal so probiert:
Delphi-Quellcode:
was ist jetzt falsch?
var a: TMemoryBasicInformation;
LBuffer: String; begin FillChar(a, SizeOf(a), 0); VirtualQuery(@a, a, SizeOf(a)); SetLength(LBuffer, MAX_PATH); GetModuleFileName(Cardinal(a.AllocationBase), PChar(LBuffer), Length(LBuffer)); showmessage(LBuffer); |
Re: Pfad+Name der aktuellen DLL aus DLL heraus ermitteln...
So war es gemeint:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Path: String; begin Setlength(Path, MAX_PATH+1); Setlength(Path, GetModuleFileName(HInstance, PChar(Path), MAX_PATH)); ShowMessage(Path); end; |
Re: Pfad+Name der aktuellen DLL aus DLL heraus ermitteln...
Zitat:
|
Re: Pfad+Name der aktuellen DLL aus DLL heraus ermitteln...
a.AllocationBase weicht von HInstance ab.
a.AllocationBase ist immer $3000 |
Re: Pfad+Name der aktuellen DLL aus DLL heraus ermitteln...
Dann stimmt was an deinem Code nicht :-D
Ich gucke es mir morgen vielleicht mal an. Bin jetzt gerade dabei Luckie zu helfen. |
Re: Pfad+Name der aktuellen DLL aus DLL heraus ermitteln...
ich habs gefunden, wenn ich bei VirtualQuery als ersten Parameter die Adresse einer globalen Angebe funktioniert es, nur eben bei der lokalen Variablen nicht.
es sieht jetzt also wie folgt aus
Delphi-Quellcode:
[...]
implementation {$R *.dfm} var GlobalVar: Cardinal; procedure TForm1.FormCreate(Sender: TObject); var QueryRes: TMemoryBasicInformation; LBuffer: String; begin VirtualQuery(@GlobalVar, QueryRes, SizeOf(QueryRes)); SetLength(LBuffer, MAX_PATH); SetLength(LBuffer, GetModuleFileName(Cardinal(QueryRes.AllocationBase), PChar(LBuffer), Length(LBuffer))); showmessage(String(LBuffer)); end; |
Re: Pfad+Name der aktuellen DLL aus DLL heraus ermitteln...
Zitat:
|
Re: Pfad+Name der aktuellen DLL aus DLL heraus ermitteln...
schöner ist es vielleicht wenn man eine funktion draus macht:
Delphi-Quellcode:
function GetModulePath: String;
var QueryRes: TMemoryBasicInformation; LBuffer: String; begin VirtualQuery(@GetModulePath, QueryRes, SizeOf(QueryRes)); SetLength(LBuffer, MAX_PATH); SetLength(LBuffer, GetModuleFileName(Cardinal(QueryRes.AllocationBase), PChar(LBuffer), Length(LBuffer))); result := LBuffer; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz