AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Gibt es so etwas wie ein Modal-Flag?

Ein Thema von DeddyH · begonnen am 11. Aug 2011 · letzter Beitrag vom 11. Aug 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#1

Gibt es so etwas wie ein Modal-Flag?

  Alt 11. Aug 2011, 14:27
Ich ermittle ein Fenster in einer fremden Anwendung anhand eines bekannten Klassennamens und des Titels und versuche, dieses in den Vordergrund zu holen. Das klappt auch gut, allerdings würde ich das Ganze gern etwas flexibler gestalten. Dazu müsste ich aber wissen, ob das aktuell ermittelte Fenster modal angezeigt wird. Gibt es eine Möglichkeit, das zu ermitteln?
Im MSDN habe ich bislang nur Dialog Style Bits im Zusammenhang mit Setups gefunden, das scheint ja nicht das richtige zu sein.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#2

AW: Gibt es so etwas wie ein Modal-Flag?

  Alt 11. Aug 2011, 14:51
Ich kann es dir nicht 100% sagen. Auch gerade erst versucht mich dazu zu belesen.
Es scheint so zu sein, dass Modal dadurch erzielt wird, dass eine applikation in ihrer MessageLoop messages dann verwirft, wenn diese zu einem ihrer controls sollen, die nicht teil des activen modal fensters sind.

Wenn du also nen Modal dialog in Delphi hast, aber auf deine hauptform klickt, werwirft die VCL die message und weißt dich mit den windowstypischen "bling" drauaf hin dass es nicht geht.

Obwohl kann auch sein dass das vllt auch tiefer in windows passiert...leider keine genaue ahnung
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#3

AW: Gibt es so etwas wie ein Modal-Flag?

  Alt 11. Aug 2011, 15:00
Ich habe gerade einmal einen Blick in die Forms.pas (D2007) geworfen: da wird FormState geändert (fsModal hinzugefügt), dann DisableTaskWindows aufgerufen, das Formular angezeigt, anschließend EnableTaskWindows aufgerufen und fsModal wieder entfernt. Über die Windows-API scheint das also nicht so einfach zu gehen, sonst hätte man ja wohl das verwendet. Schade eigentlich.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Gibt es so etwas wie ein Modal-Flag?

  Alt 11. Aug 2011, 15:26
Über die Windows-API scheint das also nicht so einfach zu gehen, sonst hätte man ja wohl das verwendet. Schade eigentlich.
Es sei denn diese Windows-Variante war Borland/Codegear/Embarcadero unbekannt, bzw. es wurde erst später in windows integriert ... also falls es in Windows inzwischen doch etwas geben sollte.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Gibt es so etwas wie ein Modal-Flag?

  Alt 11. Aug 2011, 15:31
Das einzige was mir jetzt einfällt, was eventuell klappen könnte ist das Parent-Window des Fensters rauszufinden und diesem eine Nachricht zu senden, auf die es irgendwie antworten muss.

Wenn nach kurzer Zeit keine Antwort kam, dann ist das Programm entweder sehr beschäftigt oder das Kindfenster wird gerade Modal angezeigt

... Ist allerdings eine nicht so saubere Lösung...
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

AW: Gibt es so etwas wie ein Modal-Flag?

  Alt 11. Aug 2011, 15:42
Zumal damit meine Idee, alle modalen Fenster aufzulisten und daraus dann das oberste (Z-Order) auszusuchen, nicht funktionieren würde. Aber solange man eben die Eigenschaft "modal" nicht zuverlässig ermitteln kann, ist das eh alles hinfällig.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Gibt es so etwas wie ein Modal-Flag?

  Alt 11. Aug 2011, 16:11
Es wäre zwar theoretisch möglich, auf die Delphi-Klassen eines externen Programms, mit gleicher/ähnlicher RTTI/Klassenstruktur, übder das Handle des Windows-Controls (HWND) zuzugreifen.
Da Delphi die Delphi-Typinformationen via ATOM an jedes Windows-Control anhängt, nur mit der klitzekleinen "Gemeinhheit", daß der ATOM-Name bei jedem Programmstart per Zufall neu berechnet wird, und somit für jedes aktive Programm ein anderer Name existiert, welchen man natürlich nicht kennt, außer dem Eigenem.

Und ich glaube kaum, daß du 4 Milliarden ATOMS (zum Glück hat Delphi eine beschränkte Namensberechnung, sonst wären das um unzählige Mengen mehr) prüfen willst, um den Passenden zu finden? (bei Win32 ... k.A. ob mit XE2 dieses verändert/erweitert wurde)
$2B or not $2B

Geändert von himitsu (11. Aug 2011 um 16:14 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#8

AW: Gibt es so etwas wie ein Modal-Flag?

  Alt 11. Aug 2011, 17:06
Nur eine Idee, ist nicht das aktive Fenster immer das erste in der Liste wenn mal Alt-Tab drück? Wie heißt das nochmal Taskmaster? Kann man da nicht drankommen?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#9

AW: Gibt es so etwas wie ein Modal-Flag?

  Alt 11. Aug 2011, 17:24
Genau das funktioniert nicht, deshalb ja mein Tool . Ich hatte vor längerer Zeit schon einmal einen Thread zum Problem erstellt, dass ein modales Fenster in den Hintergrund verschwindet und mit Bordmitteln nicht nach vorn zu bringen ist.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#10

AW: Gibt es so etwas wie ein Modal-Flag?

  Alt 11. Aug 2011, 17:36
Das einzige was mir jetzt einfällt, was eventuell klappen könnte ist das Parent-Window des Fensters rauszufinden und diesem eine Nachricht zu senden, auf die es irgendwie antworten muss.
Nur dumm, dass das Fenster sofort antwortet, da das Programm, dank der modalen Botschaftsschleife, sehr reaktionsfreudig ist, auch wenn es nicht "Enabled" ist.

Als mögliche Lösung könnte man alle Top-Level Fenster des Prozesses durchgehen und wenn nur eines Enabled ist, dann hat man das modale Formular. Sollte eigentlich recht gut funktionieren, denn das ist gerade das, was modal bei Fenstern bedeutet.
  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 19:22 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