AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi DLL finden und Version ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

DLL finden und Version ermitteln

Ein Thema von ChrisF · begonnen am 6. Feb 2003 · letzter Beitrag vom 7. Feb 2003
Antwort Antwort
ChrisF

Registriert seit: 22. Nov 2002
Ort: Bonn
14 Beiträge
 
Delphi 5 Enterprise
 
#1

DLL finden und Version ermitteln

  Alt 6. Feb 2003, 16:06
Hmm, Überschrift erläutere ich gleich näher...

Tach zusammen.

Habe heute mal folgendes Prob:
Da mein Prog auf bestimmte Dateiversionen von dlls angewiesen ist, möchte ich im About-Fenster die Versionen dieser Dateien anzeigen.
Jetzt will ich das jedoch so gestalten, dass es mich nicht kümmern muss, wo diese Dateien abgelegt sind. (Soll ja Leute geben, die Windows nicht auf C: haben).
Die Datei msado15.dll zum Beispiel (die auch den meisten Ärger macht) habe ich schon in verschiedenen Verzeichnissen gefunden.

Was nun? kann mich also weder drauf verlassen, dass sie unterhalb c:\programme liegt noch dass sie überhaupt auf C: liegt.

Danke im Voraus

Chris
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#2
  Alt 6. Feb 2003, 17:51
Das müsste mit GetModuleFileName gehen.
Als Modulhandle nimmst du den Handle, den LoadLibrary zurückliefert (oder GetModuleHandle, wenn die DLL anderweitig geladen wird).

So viele Pfade kann es aber eigentlich für die DLL nicht geben. Eine DLL sollte in folgendem Suchpfad liegen, denn so sucht LoadLibrary:
  1. The directory from which the application loaded.
  2. The current directory.
  3. The system directory. Use the GetSystemDirectory function to get the path of this directory.
    Windows NT/2000/XP: The name of this directory is System32.
  4. Windows NT/2000/XP: The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched. The name of this directory is System.
  5. The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.
  6. The directories that are listed in the PATH environment variable.
Solltest du die DLL im Verzeichnis einer anderen Anwendung finden, dann ist es wahrscheinlich keine System-DLL und du musst sie mit deiner Anwendung mitliefern.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 6. Feb 2003, 18:11
Moin Chris,

wenn die DLL redistributable ist, und das Programm nur unter W2K/XP laufen soll, gäbe es da noch einen "Trick":

Lege in dem Verzeichnis, in dem die EXE liegt, die die DLL laden soll noch eine Datei "NameDerExe.exe.local" an.
Das kann auch eine leere Datei sein.
Ausserdem muss in diesem Verzeichnis noch die DLL liegen.

Dann wird auf jeden Fall die DLL aus dem Verzeichnis geladen, in dem die EXE steht, egal, wo sich diese ansonsten noch befindet
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
ChrisF

Registriert seit: 22. Nov 2002
Ort: Bonn
14 Beiträge
 
Delphi 5 Enterprise
 
#4
  Alt 7. Feb 2003, 08:06
Hallo ihr beiden,

danke für die Antworten, denke das hilft mir schon weiter.
Die dll liegt übrigens (zumindest auf den meisten Systemen, auf denen ich nachgesehen habe) unterhalb C:\Programme\Gemeinsame...
Sollte aber durch PATH gefunden werden.

Danke auf jeden Fall, hoffe dass ich mich mal revanchieren kann.

Ach ja, guten Morgen.
Chris
  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 16:16 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