Hallo Leute,
ich habe ein PlugIn-System. Diese PlugIns sind DLLs mit Formulare. Wenn nun ein PlugIn durch den User geschlossen oder auf das "X" gedrückt wird, wird eine Message an das Hauptprogramm gesendet (WM_COPYDATA) und das entsprechende PlugIn freigegeben, indem erst die erstellten Forms freigebenen und dann die
DLL mit FreeLibrary geschlossen wird.
Das klappt soweit auch ganz gut. Nun möchte ich, dass die
DLL auch dann freigegeben wird, wenn der User auf das "X" klickt. Also habe ich den entsprechenden Quelltext (siehe unten) in die OnCloseQuery kopiert. Aber immer, wenn dieses Event eintritt, gibt es eine
AV. Ich kann auch nicht sehen, an welcher Stelle sie auftritt. Aber mit dem PlugIn hat es nichts zu tun. Vielleicht habe ich auch nur einen logischen Denkfehler, denn sonst funktioniert das Freigeben - nur eben nicht in der OnCloseQuery.
Hier der Quelltext:
Delphi-Quellcode:
var
Ident: PIdent;
cds: TCopyDataStruct;
hWnd: THandle;
begin
GetMem(Ident, SizeOf(TIdent));
try
ident.appname:='
Config';
cds.dwData:=0;
cds.cbData:=sizeOf(TIdent);
cds.lpData:=Ident;
hWnd:=FindWindow(
nil, '
Hauptmenu');
SendMessage(hWnd, WM_COPYDATA,
Handle, Integer(@cds));
finally
FreeMem(Ident, sizeof(TIdent));
end;
Danke im Voraus