Ich bin am Verzweifeln!!!
Ich habe eine Hauptanwendung und Plugins als
DLL mit
DLL-Forms. Nun binde ich per Windows.SetParent die
DLL-Form in einen Bereich der Hauptanwendung ein.
In diesem
DLL-Form habe ich nun eine Thread-
Unit, erstelle einen Thread, welcher ein Callback auslösen soll, wenn er beendet wird. Generell funktioniert das auch - nur nicht aus
DLL-Formularen.
Der Thread läuft aber trotzdem, es wird nur eben nicht das Callback ausgelöst.
Hier mal relevante Codes:
Thread-Unit
Delphi-Quellcode:
type
TMyThread = class(TThread);
public
constructor Create(Callback: TNotifyEvent);
...
...
...
constructor TMyThread.Create(CallBack: TNotifyEvent);
begin
inherited Create(True);
OnTerminate:=Callback;
FreeOnTerminate:=True;
end;
DLL-Form: Callback für Thread
Delphi-Quellcode:
procedure Fertig(Sender: TObject);
..
..
procedure TForm1.Fertig(Sender: TObject);
begin
ShowMessage('SD');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
th: TMyThread;
begin
th:=TMyThread.Create(Fertig);
th.Resume;
end;
Hauptformular: DLL-Form einbinden
Delphi-Quellcode:
Hndl:=PlugIn[High(PlugIns)].PlugInName.SendFormHandle;
Windows.SetParent(Hndl, Panel1.Handle);
SetWindowPos(hndl, hwnd_top, 0, 0, 0, 0, SWP_NOSIZE);
Wenn ich die Thread-betreffenden Zeilen in ein neues Projekt oder in andere Projekte implentiere, dann funktioniert das sehr schön! Warum nich auch so?
Ich hoffe ihr könnt mir helfen. Sitze nun seit 7 Stunden an dem Problem!