Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi SendToBack - aber nicht ganz! (https://www.delphipraxis.net/203699-sendtoback-aber-nicht-ganz.html)

NicoleWagner 14. Mär 2020 09:00

SendToBack - aber nicht ganz!
 
Gegeben ist ein Fenster, ich drücke den Button "starte Drittanwendung". Sobald die Drittanwendung fertig ist, übergibt sie wieder ins Fenster. So weit so fein.

Mein Problem: Ich möchte gerne sehen, ob die Drittanwendung ihren Job tut. Das würde ich auch, - wäre mein Aufruffenster nicht darüber gelegen.
Also schreibe ich in mein Aufruffenster "sendToBack..".
Das würde auch prima funktionieren, - wenn keine andere App läuft. Da wird nämlich so weit "toBack" gesendet, dass die andere Anwendung wieder optisch im Weg ist.

Kurzfassung: Ich bräuchte einen Weg zu meinem Fenster zu sagen: "Schieb Dich genau an zweite Stelle" (doch nicht GANZ in den Hintergrund). Oder aber: "schiebe Dich hinter nur jene Fenster, die zur eigenen Applikation im weitesten Sinne gehören". (und: An den Prozess oder das Fenster der Drittanwendung komme ich aus verschiedenen Gründen nicht ran.)

Danke für Tipps!

Sinspin 15. Mär 2020 09:22

AW: SendToBack - aber nicht ganz!
 
Hallo, in CreateProcess kannst du via StartupInfo und dem Feld dwFlags = STARTF_USESHOWWINDOW und wShowWindow = SW_SHOWNORMAL angeben wie die zu startende Anwendung dargestellt werden soll.
Dann ist es nicht mehr nötig dein anderes Programm weiter nach hinten zu setzen.

NicoleWagner 16. Mär 2020 09:56

AW: SendToBack - aber nicht ganz!
 
danke!
Die App starte ich mit Code, der nicht von mit ist und den ich leider auch nicht bis in die Tiefer verstehe.
Unten ein Schnipsel, das sein könnte, wovon Du sprichst.
Hast Du einen Tipp für mich, was ich eintrage, um zu sagen:
"Zeige das Fenster, in dem die App läuft, im Vordergrund, ohne jedoch modal zu werden?"

Es ist eine Anwendung, die sich mit einem Dritt-Server verbindet. Ob und wann der antwortet, weiß ich nicht.
Daher möchte ich die Status-Ausgaben einerseits sehen, andererseits aber nicht die Kontrolle über mein Programm verlieren, wenn er wieder mal hängt auf Länger. (Der Delphi-Fremdcode findet irgendwann und irgendwie heraus, wann die App fertig ist und beendet sich.)

Hier ist ein Schnipsel aus dem recht langen Delphi-Fremdcode:


FillChar(si, SizeOf(TStartupInfo), 0);
with si do begin
cb:=Sizeof(TStartupInfo);
dwFlags:=STARTF_USESHOWWINDOW;
if ShowWin then wShowWindow:=SW_SHOWDEFAULT
else begin
dwFlags:=dwFlags or STARTF_USESTDHANDLES;
wShowWindow:=SW_HIDE;
end;
hStdOutput :=hChildStdoutWr;
end;

NicoleWagner 16. Mär 2020 09:58

AW: SendToBack - aber nicht ganz!
 
danke!
Die App starte ich mit Code, der nicht von mit ist und den ich leider auch nicht bis in die Tiefer verstehe.
Unten ein Schnipsel, das sein könnte, wovon Du sprichst.
Hast Du einen Tipp für mich, was ich eintrage, um zu sagen:
"Zeige das Fenster, in dem die App läuft, im Vordergrund, ohne jedoch modal zu werden?"

Es ist eine Anwendung, die sich mit einem Dritt-Server verbindet. Ob und wann der antwortet, weiß ich nicht.
Daher möchte ich die Status-Ausgaben einerseits sehen, andererseits aber nicht die Kontrolle über mein Programm verlieren, wenn er wieder mal hängt auf Länger. (Der Delphi-Fremdcode findet irgendwann und irgendwie heraus, wann die App fertig ist und beendet sich.)

Hier ist ein Schnipsel aus dem recht langen Delphi-Fremdcode:


Zitat:

FillChar(si, SizeOf(TStartupInfo), 0);
with si do begin
cb:=Sizeof(TStartupInfo);
dwFlags:=STARTF_USESHOWWINDOW;
if ShowWin then wShowWindow:=SW_SHOWDEFAULT
else begin
dwFlags:=dwFlags or STARTF_USESTDHANDLES;
wShowWindow:=SW_HIDE;
end;
hStdOutput :=hChildStdoutWr;
end;

Sinspin 16. Mär 2020 16:24

AW: SendToBack - aber nicht ganz!
 
Ich würde es so probieren
Delphi-Quellcode:
FillChar(si, SizeOf(TStartupInfo), 0);
with si do begin
cb:=Sizeof(TStartupInfo);
dwFlags:=STARTF_USESHOWWINDOW;
wShowWindow:=SW_SHOWNORMAL;
hStdOutput :=hChildStdoutWr;
end;
unter https://docs.microsoft.com/de-de/win...ser-showwindow
gibt es noch ein paar mehr Werte mit denen man wShowWindow zum Testen befüllen kann.

NicoleWagner 17. Mär 2020 09:37

AW: SendToBack - aber nicht ganz!
 
Danke!!

Ich rufe das Programm nur einmal am Tag auf (sonst kostet der Abruf extra).
Ich melde mich, wenn ich einige Kombitionen getestet habe.

NicoleWagner 18. Mär 2020 19:21

AW: SendToBack - aber nicht ganz!
 
update: sieht wirklich gut aus, es scheint genau zu sein, was ich wollte.
Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz