Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Ereignis: Desktop anzeigen (https://www.delphipraxis.net/145567-ereignis-desktop-anzeigen.html)

Berni68 4. Jan 2010 15:23


Ereignis: Desktop anzeigen
 
Hallo,

was passiert mit einem Fenster/Programm das vom Anwender mittels WindowsButton <Desktop anzeigen> 'unsichtbar wird'.
Weder Eigenschaften wie WindowsState oder Visible ändern sich,
noch kommt in Tx.MyWM_SYSCOMMAND(var aMsg: TMessage) was an.
auch in TApplicationEvents.OnMinimize oder in TApplicationEvents.OnMessage passiert nichts.
Aber irgendwas muss man diesen Zustand doch rausbekommen können.

holliesoft 4. Jan 2010 15:40

Re: Ereignis: Desktop anzeigen
 
So weit ich weiß wird das "Desktop-Fenster" (ist ja ein Listview) in den Vordergrund gesetzt, also vor alle anderen Fenster.

leddl 4. Jan 2010 15:46

Re: Ereignis: Desktop anzeigen
 
Zitat:

Zitat von holliesoft
So weit ich weiß wird das "Desktop-Fenster" (ist ja ein Listview) in den Vordergrund gesetzt, also vor alle anderen Fenster.

Das kann aber eigentlich nicht alles sein, denn die versteckten Fenster sind daraufhin offensichtlich minimiert.

Berni68 4. Jan 2010 15:53

Re: Ereignis: Desktop anzeigen
 
Minimiert sind sie nicht, (windowsstate unverändert und Ereignis onMinimize wird nicht durchlaufen)

leddl 4. Jan 2010 16:17

Re: Ereignis: Desktop anzeigen
 
Zitat:

Zitat von Berni68
Minimiert sind sie nicht, (windowsstate unverändert und Ereignis onMinimize wird nicht durchlaufen)

Dann klick mal in der Taskleiste auf eines der Fenster ;) Die werden daraufhin aus der Taskleiste heraus wieder hergestellt. Mag sein, dass Windows nicht den üblichen Kladeradatsch durchläuft, die Fenster sind aber definitiv nicht einfach nur im Hintergrund ;)

Florian Hämmerle 4. Jan 2010 18:14

Re: Ereignis: Desktop anzeigen
 
Sie sind im hintergrund! Drück nochmal auf die "Desktop anzeigen" Button => wieder wie zuvor

mfg Florian

rollstuhlfahrer 4. Jan 2010 18:17

Re: Ereignis: Desktop anzeigen
 
ich möchte mich meinem Vor-Poster anschließen. Die Fenster sind definitiv nur im Hintergrund. Windows macht intern nichts anderes, als das Desktop-Fenster nach ganz nach vorne zu holen. Fenster, die normalerweise im Vordergrund sind, wie jetzt bei Windows Vista die Sidebar verschwinden auch. Die Sidebar kommt aber wieder, wenn man ein anderes Fenster öffnet oder wieder herholt. Und der Anmerkung, dass Fenster danach von der Taskleiste erneut kommen, möchte ich wiedersprechen. Die Fenster erscheinen ohne irgendwelche Einblendeffekte genau da, wo sie vor dem "Desktop anzeigen" waren.

Bernhard

leddl 4. Jan 2010 18:38

Re: Ereignis: Desktop anzeigen
 
Zitat:

Zitat von Florian Hämmerle
Sie sind im hintergrund! Drück nochmal auf die "Desktop anzeigen" Button => wieder wie zuvor

:gruebel: Aha... und? :gruebel:
Zitat:

Zitat von rollstuhlfahrer
Die Fenster erscheinen ohne irgendwelche Einblendeffekte genau da, wo sie vor dem "Desktop anzeigen" waren.

Bei Windows 7 ist diese Behauptung definitv falsch :zwinker: Sobald ich eines der "versteckten" Fenster in der Taskleiste anklicke kommt die typische Animation für minimierte Fenster ;)

Wie gesagt, ich habe keine Ahnung, was da tasächlich abläuft. Aber in irgendeiner Weise scheint Windows diese Fenster wohl doch als minimiert anzusehen, sonst käme eben diese Animation nicht ;)

Matze 4. Jan 2010 19:30

Re: Ereignis: Desktop anzeigen
 
Zitat:

Zitat von leddl
Bei Windows 7 ist diese Behauptung definitv falsch :zwinker: Sobald ich eines der "versteckten" Fenster in der Taskleiste anklicke kommt die typische Animation für minimierte Fenster ;)

Ist bei mir unter XP genauso.

Berni68 4. Jan 2010 19:33

Re: Ereignis: Desktop anzeigen
 
Also, die Fenster sind sind definitiv nicht minimiert, auch wenn diese Animation kommt.
Mein Problem war, daß ich im Ereignis 'OnActivate' der Anwendung einen OLE-Server anspreche.
Dann ist es leider so, daß der mir das 'Wiedereinblenden' (wenn ich auf der Taskleiste auf das Symbol klicke, oder nochmals <Desktop anzeigen>) abwürgt, d.h. das Fenster bleibt weg, läßt sich nicht mehr herstellen, obwohl es noch da ist, und z.B. auf Hotkeys richtig reagiert.
Aber eben nicht mehr sichtbar bis zum Abwürgen und Neustart.
Was den OLE-Server dazu bewegt das zu tun weiß ich nicht, ist mir aber auch egal.
Denn mit
Delphi-Quellcode:
 if IsWindowVisible(FindAWindow('...','T...')) then begin DoSomething; end;
kann ich das gewünschte feststellen, dieser Bool-Wert ist korrekt, egal wie das Fenster in diesen Zustand kommt, ob mit minimieren oder mit <Desktop anzeigen>.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 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