AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

application.exename für DLLs?

Ein Thema von Marco Steinebach · begonnen am 3. Sep 2009 · letzter Beitrag vom 3. Sep 2009
Antwort Antwort
Marco Steinebach

Registriert seit: 4. Aug 2006
491 Beiträge
 
Delphi 5 Enterprise
 
#1

application.exename für DLLs?

  Alt 3. Sep 2009, 11:54
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
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: application.exename für DLLs?

  Alt 3. Sep 2009, 12:09
"getmodulename"
oder
"paramstr(0)"
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: application.exename für DLLs?

  Alt 3. Sep 2009, 12:15
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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.199 Beiträge
 
Delphi 12 Athens
 
#4

Re: application.exename für DLLs?

  Alt 3. Sep 2009, 12:18
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-Referenz durchsuchenGOTO)

Delphi-Quellcode:
P := @FunctionsName;

// oder
label Test;
begin
  Test:
  P := @Test;
dann frage man mit VirtualQuery nach nach der Base-Adresse des Speicherblocks
(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 MSDN-Library durchsuchenGetModuleName mit diesem Handle(Adresse)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
491 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: application.exename für DLLs?

  Alt 3. Sep 2009, 16:19
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
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.199 Beiträge
 
Delphi 12 Athens
 
#6

Re: application.exename für DLLs?

  Alt 3. Sep 2009, 16:29
Zitat von Marco Steinebach:
ParamStr(0) geht nicht, hätte mich auch gewundert.
Wenn Borland damals HInstance statt 0 dem GetModuleHandle übergeben hätte, dann wäre es schon gegangen,
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 von Marco Steinebach:
@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...
neee, 'nen Vorteil hat's nicht, außer daß man so auch die Namen von anderen Modulen erfragen kann (man muß ja nicht unbedingt 'nen Ausgangs-Pointer im eigenen Code nehmen )

Aber kaputt kann da nichts gehen, schließlich wird ja nur abgefragt und nix geändert.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: application.exename für DLLs?

  Alt 3. Sep 2009, 18:34
Hallo,

ich nehme den Code immer, um in DLL's in Formularen
die Versions-Nummer anzuzeigen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz