AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars
Thema durchsuchen
Ansicht
Themen-Optionen

Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars

Ein Thema von ernschd · begonnen am 15. Dez 2015 · letzter Beitrag vom 16. Dez 2015
Antwort Antwort
Seite 1 von 2  1 2      
ernschd

Registriert seit: 16. Jan 2008
166 Beiträge
 
Delphi XE8 Professional
 
#1

Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars

  Alt 15. Dez 2015, 09:55
Delphi-Version: 2007
Hallo,

mit folgendem Code öffne ich erfolgreich ein fremdes Programm "modal":

Delphi-Quellcode:
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);
Leider friert mir dabei mein Hauptformular ein, bzw. benötigt ein Refresh, wenn das fremde Programm im Fenster darüber gezogen wird (siehe Screenshot).

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
Miniaturansicht angehängter Grafiken
shellex.jpg  
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars

  Alt 15. Dez 2015, 10:05
Delphi-Quellcode:
    if info.hProcess > 32 then begin
      WaitForInputIdle(info.hProcess, INFINITE);
      WaitForSingleObject(info.hProcess, INFINITE);
    end;
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
ernschd

Registriert seit: 16. Jan 2008
166 Beiträge
 
Delphi XE8 Professional
 
#3

AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars

  Alt 15. Dez 2015, 10:09
Funktioniert leider nicht bei mir, es sieht noch genau so aus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars

  Alt 15. Dez 2015, 10:26
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 Application.ProcressMessage; , in einer Schleife.
$2B or not $2B
  Mit Zitat antworten Zitat
ernschd

Registriert seit: 16. Jan 2008
166 Beiträge
 
Delphi XE8 Professional
 
#5

AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars

  Alt 15. Dez 2015, 10:47
Ok, danke, ich habe es so gelöst:

Delphi-Quellcode:
while WaitForSingleObject(info.hProcess, 50) = Wait_Object_0 do
    Application.ProcessMessages;
Edit
Die Lösung hat nur den kleinen Nachteil, dass die fremde Anwendung nicht mehr modal ist. Ich kann also munter in meinem Hauptformular rumklicken...

Geändert von ernschd (15. Dez 2015 um 10:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars

  Alt 15. Dez 2015, 11:02
Wie schaltet man die eigene Anwendung in so einen modalen Zustand?

In dem man eine Form modal anzeigt?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars

  Alt 15. Dez 2015, 11:03
In einem "modalen" Fenster kann man auch rumklicken, wenn die Anwendung richtig läuft.


PS: vorher z.B. Enabled der Form auf False setzen
(oder den/die Button)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars

  Alt 15. Dez 2015, 11:11
In einem "modalen" Fenster kann man auch rumklicken, wenn die Anwendung richtig läuft.


PS: vorher z.B. Enabled der Form auf False setzen
(oder den/die Button)
Natürlich kann man da rumklicken ... und es passiert dort nur das, was ich auch zulasse ... ist ja mein Formular, da kann ich mit machen was ich will ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars

  Alt 15. Dez 2015, 11:22
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".
$2B or not $2B
  Mit Zitat antworten Zitat
ernschd

Registriert seit: 16. Jan 2008
166 Beiträge
 
Delphi XE8 Professional
 
#10

AW: Fremde Anwendung modal starten, Neuzeichnen des eigenen Formulars

  Alt 15. Dez 2015, 11:42
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).
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 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