![]() |
DLL automatisch nach Procedureaufruf beenden
Hallo,
Ich habe eine DLL-Datei, welche ich zur Laufzeit einbinde. In der DLL habe ich ein Formular, welches ich folgendermaßen aufrufe:
Delphi-Quellcode:
Wenn die Form aktiviert wird, startet eine Procedure, führt die Anweisungen aus und dann soll diese DLL wieder schließen. Normalerweise schließe ich die DLL mit
var Uebergabe : TUebergabe;
BEGIN Uebergabe := TUebergabe.Create(NIL); Uebergabe.ShowModal; Uebergabe.Free; END;
Delphi-Quellcode:
. Aber Irgendwie geht das nicht. Es tut sich nix. Wenn ich mit
self.Close
Delphi-Quellcode:
beende, kann ich nicht mehr auf das Hauptfenster zugreifen (bzw. nix anklicken).
self.release
Was mache ich falsch ? mfg Tommy82 |
Re: DLL automatisch nach Procedureaufruf beenden
Zitat:
|
Re: DLL automatisch nach Procedureaufruf beenden
Hallo,
Formular wird aus der DLL aufgerufen
Delphi-Quellcode:
Procedure des Hauptprogramms :
Procedure Uebergabe;
var Uebergabe : TUebergabe; BEGIN Uebergabe := TUebergabe.Create(NIL); Uebergabe.ShowModal; Uebergabe.Free; END;
Delphi-Quellcode:
Aufruf der Procedure
Procedure TForm1.zeige_DLL(Dateiname, Name:String);
var DLL:TDLL; Handle : THandle; BEGIN Handle := LoadLibrary(PCHAR(ExtractFilePath(ParamStr(0)) + '\PlugIns\' + Dateiname)); IF Handle <> 0 THEN BEGIN @DLL := GetProcAddress(Handle, PCHAR(Name)); IF @DLL <> NIL THEN DLL ELSE Showmessage('Fehler beim Laden der Datei "'+Dateiname+'"'); END; FreeLibrary(Handle); EN
Delphi-Quellcode:
Der Aufruf selber funktioniert einwandfrei, aber das beenden geht leider nur manuell. Will es aber automatisch nach beenden der Procedure haben.
procedure TForm1.bergabe1Click(Sender: TObject);
begin Zeige_DLL('Preissuchmaschine.dll','Uebergabe'); end; mfg Tommy82 |
Re: DLL automatisch nach Procedureaufruf beenden
Wann innerhalb der DLL wird die Procedure denn aufgerufen? OnCreate z.B. funktioniert Close nicht.
|
Re: DLL automatisch nach Procedureaufruf beenden
Delphi-Quellcode:
procedure TUebergabe.FormActivate(Sender: TObject);
begin Start; end; Procedure TUebergabe.Start; BEGIN ... self.close // self.release geht auch nicht END; |
Re: DLL automatisch nach Procedureaufruf beenden
Komisch, sollte eigentlich gehen. Aber mir ist was anderes aufgefallen.
Delphi-Quellcode:
Procedure und Variable heißen beide Uebergabe? Und das frisst der Compiler?
Procedure Uebergabe;
var Uebergabe : TUebergabe; BEGIN Uebergabe := TUebergabe.Create(NIL); Uebergabe.ShowModal; Uebergabe.Free; END; |
Re: DLL automatisch nach Procedureaufruf beenden
Ja, das frisst der. Habe das aber auch mal geändert und geht trotzdem nicht.
mfg Tommy82 |
Re: DLL automatisch nach Procedureaufruf beenden
Zitat:
Und das:
Delphi-Quellcode:
ist der Aufruf einer Methode einer Klasse. Ein real existierendes Objekt in Form einer Datei, kennt keine Methoden im Gegensatz zu einem abstrakten Gebilder, wie es eine Klasse ist. Eine Datei kann keine Methode Close haben.
self.Close
Kleiner Tipp: Vor dem Posten erstmal die Gedanken sortieren und überlegen, was man eigentlich will und wo das Problem eigentlich ist. Meist erübrigt sich dann schon ein Posting. Was Forms in DLLs angeht, kannst du dir mal das Tutorial von Olli angucken: ![]() |
Re: DLL automatisch nach Procedureaufruf beenden
Hallo,
dann habe ich mich falsch ausgedrückt. Ich möchte das Formular schießen. Die DLL schließt sich von selber, das weiß ich. Das Formular schließe ich aber mit "Self.Close". Das funktioniert auch wenn ich das manuell (über einen Button) mache. Aber wenn ich es mit in die OnActivate mache, klappts net. mfg Tommy82 |
Re: DLL automatisch nach Procedureaufruf beenden
Die DLL schließt sich aber nur von selbst, wenn du sie nicht zur Laufzeit dynamisch lädst.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:08 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