AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

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
Benutzerbild von DeddyH
DeddyH

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

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

  Alt 11. Aug 2011, 14: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.400 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 11. Aug 2011, 14: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.
Ein Therapeut entspricht 1024 Gigapeut.
  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
 
#3

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

  Alt 11. Aug 2011, 14: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.662 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 11. Aug 2011, 14: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.400 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 11. Aug 2011, 15: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)
Ein Therapeut entspricht 1024 Gigapeut.

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

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

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

  Alt 11. Aug 2011, 16: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.662 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 11. Aug 2011, 16: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.485 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

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

  Alt 11. Aug 2011, 16: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
Benutzerbild von DeddyH
DeddyH

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

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

  Alt 11. Aug 2011, 16:43
logisch, da hätte man drauf kommen können. Probier ich morgen gleich aus, herzlichen Dank

[edit] Das war der Burner! Ich bin mittlerweile auf dem Stand, dass ich (bislang zuverlässig) ermitteln kann, ob die zu untersuchende Software irgendein modales Fenster geöffnet hat. Falls nicht, macht mein Programm gar nichts, ansonsten holt es dieses mit ForceForegroundWindow nach vorn. Da ich es leider auch mit Biegen und Brechen nicht hinbekommen habe, ein modales Fenster hinter ein anderes zu legen, kann ich die korrekte Funktion leider erst dann testen, wenn das wieder beim Kunden auftritt. Danke für die zahlreichen Vorschläge, wenn ich es genau weiß, gebe ich nochmal Rückmeldung. [/edit]
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

Geändert von DeddyH (12. Aug 2011 um 10:52 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:39 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