Hallo Chris
Danke dir für deine Antwort. Dein Tipp MsgWaitForMultipleObjects zu verwenden hat mich wirklich weiter gebracht. Nun sehe ich meine Hinweisform und sie ist nicht mehr nur weis.
Nun ist dafür aber das Problem mit dem Stay-on-top wieder aufgetaucht. Die Hinweisform ist nicht mehr im Vordergrund.
Ich habe in der Hinweisform bisher folgendes gemacht:
Formstyle = fsStayOnTop
und im FormCreate
SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
Der komplette Code sieht so aus:
Delphi-Quellcode:
procedure TMainForm.Button1Click(Sender: TObject);
var
_myForm: TForm1;
...
begin
_myForm := TForm1.Create(self);
_myForm.UebergabeWert := 'blabla';
_myForm.Show;
//Externe Software starten
if not CreateProcess( nil,_pAppName,nil,nil,False,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,nil,nil,_StartupInfo,_ProcessInfo)
then begin
_lwResult := WAIT_FAILED;
exit;
end;
//Warten bis externe Software beendet wurde
_RunFinished := false;
repeat
_WaitResult := MsgWaitForMultipleObjects(1, _ProcessInfo.hProcess, FALSE, INFINITE, QS_ALLINPUT);
if _WaitResult <> WAIT_OBJECT_0 then begin
Application.ProcessMessages;
// Wurde die Anwendung selber terminiert?
if Application.Terminated then _RunFinished := true;
end else begin
// der Process ist beendet...
_RunFinished := true;
end;
until _RunFinished;
_myForm.Destroy;
end;
Was mache ich noch falsch, dass die Hinweisform nicht ständig im Vordergrund ist?
Danke und Gruess
Fisti