Jetzt mal ne Frage bzw. Vorschlag. Da du in der
Dll sowieso die Forms eingebunden hast warum machst du das dan nicht so?
Delphi-Quellcode:
procedure CreateForm(app: TApplication);
stdcall;
begin
if app.Handle = 0
then app.handle := GetActiveWindow;
try
if Form2=nil
then
app.CreateForm(TForm2, Form2);
Form2.Show();
except
On E:
Exception Do app.HandleException(E);
end;
end;
//Aufruf so:
CreateForm2(Application);
Dadurch bindest du die Form direkt in die Anwendung ein. Wenn du jetzt die Anwendung schliest müsste theoretisch (habs jetzt nicht getest, ist jetzt so ein Gedanke) die Application selbst das Form killen. Weil da du die
Unit Forms in die
DLL eingebunden hast, hat die
dll einen eigene Application Klasse. Du übergibst den
Handle bzw. änderst ihn, aber die Klasse hat nicht die gleichen Eigenschaften wie die andere.
In meinem Fall übergibst du die Adresse auf die Application, die du in der Anwendung hast, mit allen Eigenschaften. die Funktion CreateForm wird auch in der Anwendung intern beim erstellen eingesetzt.
P.S. Falls ich falsch liege lass ich mich auch gerne belehren, was
WinAPI angeht, weil wirklich viel zutun hab ich damit nicht