Ich dachte die 1. Anwendung wird nicht geblockt, heißt: Du bekommst einen Rückgabewert obwohl das mit ShowModal() geöffnete Fenster noch offen ist.
Die Erklärung war dass der ShowModal()-Aufruf der Form2 selbst anfängt Nachrichten zu verarbeiten. Dem hast du deinen eigene Nachricht nicht beigebracht. Er wirft sie weg und beantwortet sie mit Null.
Versuche es doch mal so:
Delphi-Quellcode:
// TWindowHook = function (var Message: TMessage): Boolean of object;
function TForm1.handleIpcShowForm(var Message: TMessage): Boolean;
const
WM_IPC_SHOWFORM = WM_USER + 1;
var
secondForm: TForm;
begin
case Message.Msg of
WM_IPC_SHOWFORM: begin
secondForm := TForm.Create(nil);
try
Message.Result := secondForm.ShowModal();
Result := True;
finally
secondForm.Destroy();
end;
end;
else
Result := False;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.HookMainWindow(handleIpcShowForm);
end;