![]() |
application.exename für DLLs?
Hallo zusammen,
in einer DLL möchte ich gerne herausfinden, in welchem Verzeichnis sie liegt, also ein Äquivalent zu Application.ExeName. Gibt es sowas und wenn ja, wie mach ich das? Viele Grüße Marco |
Re: application.exename für DLLs?
"getmodulename"
oder "paramstr(0)" |
Re: application.exename für DLLs?
Hallo,
ich mache das so
Delphi-Quellcode:
var
szDllName: array[0..255] of Char; sDllName : String; begin GetModuleFileName(HInstance, szDllName, SizeOf(szDllName)-1); sDllName:= StrPas(szDllName); Und ja, man kann auch SetLength benutzten, uss man aber nicht ;) Heiko |
Re: application.exename für DLLs?
Im Prinzip (egal ob EXE oder DLL):
man hole sich einen Pointer innerhalb des gewünschten Moduls z.B. die Adresse einer Funktion (vorzugsweise der Funktion, worin man das grad abfragt) oder die Adresses eines Labels (siehe ![]()
Delphi-Quellcode:
dann frage man mit VirtualQuery nach nach der Base-Adresse des Speicherblocks
P := @FunctionsName;
// oder label Test; begin Test: P := @Test; (in diesem Fall der Anfangsadresse der FileImages, worin der gefundene Pointer liegt) diese BaseAdress entspricht zufällig dem Handle der DLL/EXE und nun einfach nur noch ![]() |
Re: application.exename für DLLs?
Hallo,
vielen Dank für die superschnellen Antworten. ParamStr(0) geht nicht, hätte mich auch gewundert. ;-) @Heiko: ich hab’s jetzt wie du gelöst, und es tut, was es soll. @himitsu: Uaaa, gibt’s bei deiner Lösung ‚nen Vorteil, wenn GetModuleFileName (hInstance,... bereits das richtige liefert? Nicht, daß ich da was im Arbeitsspeicher kaputprogrammiere... Vielen Dank nochmal und viele Grüße Marco |
Re: application.exename für DLLs?
Zitat:
aber 0 steht halt für die Application. ParamStr(0) ruft GetModuleName(0, auf, wärend ParamStr(x) mit x > 0 den ParameterBlock ausließt Zitat:
Aber kaputt kann da nichts gehen, schließlich wird ja nur abgefragt und nix geändert. |
Re: application.exename für DLLs?
Hallo,
ich nehme den Code immer, um in DLL's in Formularen die Versions-Nummer anzuzeigen. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 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