Entwickler-Ecke
Windows API - Leeren Desktop zur Anzeige bringen
Tendl - Do 20.02.03 11:44
Titel: Leeren Desktop zur Anzeige bringen
Ich schreibe ein Programm, das die Desktopeinstellungen (Wallpaper, Colors etc.) ändern soll. Dabei möchte ich dem Benutzer die Möglichkeit geben, die Änderungen kurz zu begutachten, ehe sie endgültig gespeichert werden. Dazu ist nötig alle offenen Fenster zu verstecken. Wie mache ich das am einfachsten? Oder gibt es vielleicht eine elegantere Möglichkeit?
Merci
Thomas
!!! Keine Frage ist so dumm, daß sie nicht auch mehrere andere interessiert !!!
Delete - Do 20.02.03 11:56
Mit EnumWindows Fenster auflisten, mit IsWindow prüfen, ob es sich um ein Fenster handelt, mit IsVisible kucken, ob es sicht bar ist und wenn ja mit ShowWindow minimieren.
Und wenn du es perfekt machen willst, merkst du dir die Fenster, die du minimiert hast und stellst sie nach der Vorschau wieder in ihren ursprünglichen Zustand wieder her.
Tendl - Fr 21.02.03 11:27
Titel: Klappt fast, aber wie verstecke ich ohne zu deaktivieren?
Vielen Dank,
noch folgende Frage :
Mit ShowWindow (..,SW_HIDE) kann ich die Fenster wirklich alle verschwinden lassen.
Leider deaktiviere ich damit auch mein aktives Fenster komplett, d.h. das OnTimer Event, das den alten Bildschirm wieder aufbauen soll, kommt nicht mehr, weil deaktiviert.
Ein Weg wäre das Fenster nur zu minimieren, aber eigentlich möchte ich keines der Fenster wirklich deaktivieren.
Auf welchen Weg kann ich das erreichen?
Danke
Thomas [/b]
Delete - Fr 21.02.03 13:04
Titel: Re: Klappt fast, aber wie verstecke ich ohne zu deaktivieren
| Tendl hat folgendes geschrieben: |
| Leider deaktiviere ich damit auch mein aktives Fenster komplett |
Die zu
EnumWindows gehörende "EnumWindowsProc" liefert im Funktionskopf eigentlich das Fensterhandle:
Quelltext
1: 2: 3: 4:
| BOOL CALLBACK EnumWindowsProc( HWND hwnd, // <-- Handle LPARAM lParam ); |
Deine Form hat selbst ein solches Handle (Form1.Handle). Du müsstest also nur beides vergleichen und die Minimierung nur durchführen, wenn das Handle
nicht mit dem deiner Form übereinstimmt. Evtl. ist auch noch "Application.Handle" zu berücksichtigen.
Noch einfacher ist die Nutzung von "Desktop anzeigen.scf". Zu finden in der Schnellstartleiste bzw. als Datei auf der Platte. Die Einschränkung ist allerdings, dass min. der IE4 installiert sein muss.
Vorteil: du könntest diese SCF-Datei deinem Programm beilegen und via
ShellExecute aufrufen. Musst du mal probieren. :)
Tendl - Fr 21.02.03 16:31
Super,
vielen Dank vor allem nach so etwas wie dem 2. Vorschlag war ich auf der Suche. Allerdings finde ich unter NT4.0 und IExplorer 5.5 die scf-Datei nicht. Aber sicher unter Win98 oder Win2000. Um universell zu bleiben werde ich also wohl doch den ersten Vorschlag realisieren und das aktive Fenster nur minimizen.
Jedenfalls Dankeschön für Deine Hilfe
Thomas
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!