Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi DLL nach Benutzung wieder freigeben (https://www.delphipraxis.net/93942-dll-nach-benutzung-wieder-freigeben.html)

TheMiller 29. Jun 2007 14:28

Re: DLL nach Benutzung wieder freigeben
 
Wollte nochmal lieb nachfragen, ob das mit den Messages funktionieren kann? Ich dachte mir das so:

Wenn das PlugIn geschlossen wird (onCloseQuery etc) sendet es eine Nachricht an das Hauptprogramm. Dieses wertet die Message aus und gibt die DLL wieder frei (also das Plug-In)

Danke

Bernhard Geyer 29. Jun 2007 15:01

Re: DLL nach Benutzung wieder freigeben
 
Zitat:

Zitat von DJ-SPM
Wenn das PlugIn geschlossen wird (onCloseQuery etc) sendet es eine Nachricht an das Hauptprogramm. Dieses wertet die Message aus und gibt die DLL wieder frei (also das Plug-In)

Das könnte so gehen.

TheMiller 29. Jun 2007 15:10

Re: DLL nach Benutzung wieder freigeben
 
Ja super! Ähm... kennt jmd. ein kleines Tut zum erstellen eigener Messages?

Danke!

hoika 29. Jun 2007 15:20

Re: DLL nach Benutzung wieder freigeben
 
Hallo,

z.B. RegisterWindowsMessage('MeinPlugIn_eins');

Das ruft sowohl deine Hauptprogramm also auch dein Plugin auf,
der Return-Wert ist der gleiche.

Dann über PostMessage(hMainWnd..) die Nachricht ans Hauptfenster
(das hMainWnd muss das Hauptfenster aber an das Plugin übergeben).


Heiko
PS: Der Name sollte aber schon eindeutiger sein ;)

TheMiller 29. Jun 2007 15:29

Re: DLL nach Benutzung wieder freigeben
 
Danke, aber diese Methode verstehe ich nicht. Was bewirkt sie? Gibt es einen Unterschied zu dieser? Eigene Message

Danke

hoika 29. Jun 2007 15:51

Re: DLL nach Benutzung wieder freigeben
 
Hallo,

ja, das ist das gleiche (weiter unten, nicht WM_USER + X)

Windows erzeugt eine eindeutige Message-Nummer,
egal wer RegisterWindowsMessage aufruft (könnten sogar 2 verschiedene Programme sein)


Heiko

TheMiller 29. Jun 2007 16:07

Re: DLL nach Benutzung wieder freigeben
 
Also, ich habe es jetzt so gemacht:

Ich habe im Hauptprogramm und in dem PlugIn eine Message WM_UNLOADPLUGIN definiert. Beim Programmstart speichere ich das Handle von der MainForm und übergebe diese beim Öffnen an alle PlugIns. Da meine Plug-In-DLLs auch Forms enthalten, kann ich ja auf Schließen des PlugIns reagieren. In einem solchen Event sende ich einfach eine Message an das MainFormHandle mit WM_UNLOADPLUGIN und siehe da... es ist weg und der Speicher ist auch korrekt freigegeben!

Zu der anderen Lösung von hoika: Dies scheint dann also das gleiche wie "meine" Lösung zu sein!

Danke für eure Hilfe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:33 Uhr.
Seite 2 von 2     12   

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