Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Pfad prüfen - 32/64bit DLL

  Alt 7. Mai 2018, 17:46
Alternativ:
I.d.R. hat man zwei verschiedene Environment Variablen zur Verfügung, Beispiel %ProgramFiles% und %ProgramFiles(x86)%, öffne ein Kommandprompt und tippe "SET" ein + Return drücken, da werden dir alle aufgelistet, nun such Dir eine Variable aus die es auch mit (x86) gibt und kopiere dort deine dll rein, also in (x86) die 32bit usw. Dann kannst Du in Deinem Programm wie gewünscht darauf zugreifen.

Achja, generell kann man auch System32 und SysWOW64 verzeichnisse benutzen, in letzteres kommt die 32bit dll rein.
Wenn Du LoadLibrary() aufrufst wählt Windows automatisch die Richtige, ohne Pfadangabe.
Diese Funktion hier kannst Du benutzen um aus ExpandFileName('Library.dll') = 'X:\PFAD\Library.dll' zu machen (sofern Library.dll irgendwo findbar ist)
Delphi-Quellcode:
//function GetFullPathName(lpFileName: PChar; nBufferLength: DWORD; lpBuffer: PChar; var lpFilePart: PChar): DWORD; stdcall;
//function GetFullPathName; external kernel32 name 'GetFullPathNameA';
function ExpandFileName(const FileName: string): string;
var
  FName: PChar;
  Buffer: array[0..MAX_PATH - 1] of Char;
begin
  SetString(Result, Buffer, GetFullPathName(PChar(FileName), SizeOf(Buffer), Buffer, FName));
end;
ACHTUNG!!!!
Unbedingt vorher in Deiner Windows.pas Datei gucken ob der function GetFullPathName(lpFileName: PChar; nBufferLength: DWORD; lpBuffer: PChar; var lpFilePart: PChar): DWORD; stdcall; Aufruf so definiert ist, ansonsten meinen Source anpassen!!!

PS: Diese Funktion liefert so wie sie da steht nur den ersten Treffer wieder, mehr zeigt sie nicht.
Du kannst sie einfach umprogrammieren um eine TStringList o.ä. als Result zu erhalten wo alle Treffer auf den Suchbegriff drinnen stehen, falls Du da Hilfe brauchst sag Bescheid.
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 7. Mai 2018 um 19:04 Uhr)
  Mit Zitat antworten Zitat