![]() |
DLL-Problem
Hi,
ich bin derzeit dabei ein einigermaßen ordentliches Plugin-System zu programmieren. Dazu sucht der User mit Hilfe eines OpenDialogs die DLL aus. Dann wird mit dem folgenden Code die DLL geladen und die Installationsprozedur ausgeführt und der DLL-Pfad wird in eine XML-Datei geschrieben, damit sie beim nächsten Starten auch wieder geladen wird... Hier der SourceCode:
Delphi-Quellcode:
Das Problem liegt in der Anweisung "GetProcAdress()" und der Rest danach scheint auch nicht wirklich zu funktionieren... In der OH steht nix zu DLLs...
procedure TForm1.Installieren1Click(Sender: TObject);
var InstFunc: TInstall; InstFuncPtr: TFarProc; DLLHandle: THandle; PlgXML: IXMLDOMDocument2; Plgs: IXMLDOMNode; Plg: IXMLDOMNode; PlgPath: IXMLDOMNode; begin if OpenDialog2.Execute then begin DLLHandle := LoadLibrary(PChar(OpenDialog1.FileName)); InstFuncPtr := GetProcAdress(DLLHandle,'install'); if FuncPtr <> nil then begin @InstFunc := FuncPtr; if InstFunc then begin MessageDlg('Plugin-Installation erfolgreich', mtInformation, [mbOK], 0); PlgXML := CoDOMDocument40.Create; PlgXML.setProperty('NewParser', True); PlgXML.load(ExtractFileName(Application.ExeName)+'plugins.xml'); if PlgXML.parseError.errorCode <> 0 then begin ShowMessage('XML Fehler: '#13#10 + PlgXML.parseError.reason); Exit; end; Plgs := PlgXML.documentElement; Plg := PlgXML.createElement('plugin'); PlgPath := PlgXML.createElement('path'); PlgPath.text := OpenDialog2.FileName; Plg.appendChild(PlgPath); Plgs.appendChild(Plg); PlgXml.save(ExtractFileName(Application.ExeName)+'plugins.xml'); end; FuncPtr := nil; end else ShowMessage('Plugin-DLL ist Fehlerhaft'); FreeLibrary(DLLHandle); end; end; Hope for fast help, Chris |
Re: DLL-Problem
Zitat:
Zitat:
|
Hi,
danke, habe es geändert, aber er hängt immer noch bei GetProcAdress... Chris |
Moin Chris,
dazu fallen mir erst einmal zwei Sachen ein:
|
Er bricht ja nicht während der Laufzeit ab, sondern beim compilieren... "Undeclared identifier: GetProcAdress"...
chris |
Moin Chris,
wäre ganz hilfreich gewesen, wenn Du das dazugeschrieben hättest :mrgreen: Die Funktion heisst GetProcAddress mit zwei d. |
*ARGH*
Jetzt läufts.... Aber... aber... im Buch, da.... NEIN! Da stands auch... Sinnloseter Beitrag in der Geschichte der DP... Chris |
Falls du noch mehr Infos brauchst, kuckst du hier:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:49 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