Hallo zusammen!
Im
MSDN steht:
Zitat:
The SendMessage function calls the window procedure for the specified window and does not return until the window procedure has processed the message.
Nun habe ich ein Problem damit, von einem Prozess aus wird SendMessage benutzt um zu einem anderen Prozess eine Nachricht zu schicken, dort wird ein Fenster per ShowModal angezeigt und das ModalResult als Result der Message zurück geschickt, dabei sollte der Thread mit SendMessage warten bis die Nachricht abgearbeitet wurde. Tut es aber nicht, SendMessage kehrt nach kurzer Zeit mit 0 als Result zurück. GetLastError meint dazu kein Fehler, also auch 0.
Pseudo Code:
Code:
Prozess 1:
Result:=SendMessage(RemoteWnd, WM_IPC_SHOWFORM, 0, 0);
// Hier gehts mit Result=0 kurz drauf weiter, obwohl Form2 noch nicht geschlossen wurde.
Prozess 2:
procedure TForm1.WndProc(var Message:TMessage);
begin
Case Message.Msg of
...
WM_IPC_SHOWFORM: begin
Message.Result:=Form2.ShowModal;
Exit; <- Hier gehts erst weiter sobald Form2 geschlossen wurde
end;
end;
...
end;
Warum wartet SendMessage nicht? Habs auch mit SendMessageTimeout versucht bei gleichem Ergebnis