![]() |
Delphi-Version: 2007
Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
mit folgendem Code öffne ich erfolgreich ein fremdes Programm "modal":
Delphi-Quellcode:
Leider friert mir dabei mein Hauptformular ein, bzw. benötigt ein Refresh, wenn das fremde Programm im Fenster darüber gezogen wird (siehe Screenshot).
FillChar(info, sizeof(info), 0);
info.cbSize := sizeOf(info); info.lpVerb := 'open'; info.lpFile := PChar(CmdLine); info.lpParameters := PChar(parameters); info.nShow := SW_SHOW; info.fMask := SEE_MASK_NOCLOSEPROCESS; ShellExecuteEx(@info); WaitForSingleObject(info.hProcess, Infinite); Wie kann ich das Formular neu zeichnen lassen oder dieses Verhalten umgehen? Ich habe auch schon vor dem ShellExecuteEx das Hauptformular ausgeblendet, aber das könnte den Anwender verwirren. Danke und Grüße |
AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars
Delphi-Quellcode:
if info.hProcess > 32 then begin
WaitForInputIdle(info.hProcess, INFINITE); WaitForSingleObject(info.hProcess, INFINITE); end; |
AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars
Funktioniert leider nicht bei mir, es sieht noch genau so aus :(
|
AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars
Wenn DU sagst "Warte bis fertig und mache nix Anderes", dann macht Delphi das auch.
Code in einen Thread auslagern ODER kein INFINITE, sondern ab und an mal
Delphi-Quellcode:
, in einer Schleife. :roll:
Application.ProcressMessage;
|
AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars
Ok, danke, ich habe es so gelöst:
Delphi-Quellcode:
Edit
while WaitForSingleObject(info.hProcess, 50) = Wait_Object_0 do
Application.ProcessMessages; Die Lösung hat nur den kleinen Nachteil, dass die fremde Anwendung nicht mehr modal ist. Ich kann also munter in meinem Hauptformular rumklicken... |
AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars
Wie schaltet man die eigene Anwendung in so einen modalen Zustand?
In dem man eine Form modal anzeigt? |
AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars
In einem "modalen" Fenster kann man auch rumklicken, wenn die Anwendung richtig läuft. :angle:
PS: vorher z.B. Enabled der Form auf False setzen :zwinker: (oder den/die Button) |
AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars
Zitat:
|
AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars
Wollte nur sagen:
Modal bezieht sich nicht auf das Fenster selber, sondern auf andere Fenster der Anwendung ... bin ich "modal", dann sind vorherrige Fenster "Disabled". |
AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars
Genau, ich meine damit, dass die fremde Anwendung ganz normal bedienbar sein soll, mein Hauptformular aber so lange nicht, bis die fremde Anwendung wieder beendet wird.
So wie das Verhalten von ShowModal beim Anzeigen eines Formulars (die Hintergrundanwendung ist nicht anklickbar). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz