Autor Beitrag
Tendl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: Do 20.02.03 11:44 
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 !!!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: 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]
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: 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