AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi DLL vor allem anderen aus Ressourcen laden?
Thema durchsuchen
Ansicht
Themen-Optionen

DLL vor allem anderen aus Ressourcen laden?

Ein Thema von HaCkAttaCk2001 · begonnen am 22. Jul 2004 · letzter Beitrag vom 23. Jul 2004
Antwort Antwort
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#1

Re: DLL vor allem anderen aus Ressourcen laden?

  Alt 22. Jul 2004, 19:02
Zitat von HaCkAttaCk2001:
Kleine Ergänzung noch zu meinem Post oben: Mein Hauptprogramm selbst braucht diese DLL nicht, aber eine Unit, die ich verwenden muss. Kann ich vielleicht die Unit erst später dazuladen lassen? Denn ich glaub das verheddert sich doch, wenn ich im Hauptprogramm die DLLs dynamisch lade, die die Unit schon viel früher braucht... oder hab ich da nen Denkfehler?
Die DLL muss mit LoadLibrary in dieser Unit dynamisch geladen und freigegeben werden.
Wenn du von dieser Unit keinen Sourcecode hast, dann hast du die A-Karte gezogen.
Ansonsten einfach in die Unit mal nach dem Wort External suchen.

Delphi-Quellcode:
// Hier ein Beispiel (von Marcel van Brakel), wie man dynamisch oder statisch linken kann
procedure GetProcedureAddress(var P: Pointer; const ModuleName, ProcName: string);
var
  ModuleHandle: HMODULE;
begin
  if not Assigned(P) then
  begin
    ModuleHandle := GetModuleHandle(PChar(ModuleName));
    if ModuleHandle = 0 then
    begin
      ModuleHandle := LoadLibrary(PChar(ModuleName));
      if ModuleHandle = 0 then raise Ewin32Error.Create('Library not found: ' + ModuleName);
    end;
    P := GetProcAddress(ModuleHandle, PChar(ProcName));
    if not Assigned(P) then raise EWin32Error.Create('Function not found: ' + ModuleName + '.' + ProcName);
  end;
end;

{$IFDEF DYNAMIC_LINK}
var
  _FindWindowEx: Pointer;

function FindWindowEx;
begin
  GetProcedureAddress(_FindWindowEx, user32, 'FindWindowExW');
  asm
    mov esp, ebp
    pop ebp
    jmp [_FindWindowEx]
  end;
end;
{$ELSE}
function FindWindowEx; external user32 name 'FindWindowExW';
{$ENDIF DYNAMIC_LINK}
Andreas
  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 07:21 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 by Thomas Breitkreuz