Hi,
früher gar es mal in der Taskbar rechts außen einen Show Desktop Button. Wenn man da drauf geklickt hat, wurden alle offenen Fenster minimiert. Wenn man noch mal drauf gezeigt hat, wurden die Fenster wieder angezeigt.
Das war sehr praktisch. Leider wurde dieser Button in Windows 10 zu einem Strich verkümmert. Und den zu treffen ist so hakelig, dass ich den nicht mehr nutzen will.
Es gibt m.W. keine vernünftige Möglichkeit diesen Strich zu einem ordentlichen Button aufzublasen.
Deshalb möchte ich diese Funktion selbst realisieren.
Ich habe eine Form, die hat nur eine Picture Box, mit Dock Fill in einer Form mit FormBorderStyle=None. Also nichts weiter als ein kleines Rechteck. Dieses Control platziere ich in die rechte untere Ecke des Bildschirms und rufe aus der Shell32.dll die Funktion shell.ToggleDesktop() auf.
Mit der linken Maustaste wird getoggelt.
Mit der rechten Maustaste wird das Program beendet.
Hier ist mein bescheidenes Coding:
Beim ersten Klick werden wie gewünscht alle Fenster minimiert.
Aber leider bleibt es dabei. D.h. weitere Mausklicks zeigen die minimierten Fenster nicht wieder an!
Eigentlich meine ich mich genau an Microsoft Docs gehalten zu haben. Aber offensichtlich mache ich etwas falsch.
Vielleicht kennt sich ja jemand mit dem Dingens aus und kann mir nachsichtig auf die Sprünge helfen.
LG
Peter
früher gar es mal in der Taskbar rechts außen einen Show Desktop Button. Wenn man da drauf geklickt hat, wurden alle offenen Fenster minimiert. Wenn man noch mal drauf gezeigt hat, wurden die Fenster wieder angezeigt.
Das war sehr praktisch. Leider wurde dieser Button in Windows 10 zu einem Strich verkümmert. Und den zu treffen ist so hakelig, dass ich den nicht mehr nutzen will.
Es gibt m.W. keine vernünftige Möglichkeit diesen Strich zu einem ordentlichen Button aufzublasen.
Deshalb möchte ich diese Funktion selbst realisieren.
Ich habe eine Form, die hat nur eine Picture Box, mit Dock Fill in einer Form mit FormBorderStyle=None. Also nichts weiter als ein kleines Rechteck. Dieses Control platziere ich in die rechte untere Ecke des Bildschirms und rufe aus der Shell32.dll die Funktion shell.ToggleDesktop() auf.
Mit der linken Maustaste wird getoggelt.
Mit der rechten Maustaste wird das Program beendet.
Hier ist mein bescheidenes Coding:
VB.NET-Quellcode
- 'Add reference: COM - Microsoft Shell Controls and Automation (Shell32.dll)
- Public Class FrmShowHideDesktop
- Private Sub FrmShowHideDesktop_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- 'Get primary screen height and width
- Dim myWorkArea As Rectangle = Screen.PrimaryScreen.WorkingArea
- 'Set size of control
- Me.Size = New Size(20, 40)
- 'Position control into lower right corner
- Me.Location = New Point(myWorkArea.Width - PicControl.Width,
- myWorkArea.Height - PicControl.Height)
- End Sub
- Private Sub PicControl_MouseClick(sender As Object, e As MouseEventArgs) Handles PicControl.MouseClick
- 'Terminate program with right mouse button click
- If e.Button = MouseButtons.Right Then
- Me.Close()
- Exit Sub
- End If
- 'Show / hide with left mouse button click
- Dim shell As Shell32.Shell = New Shell32.Shell()
- shell.ToggleDesktop()
- shell = Nothing
- End Sub
- End Class
Beim ersten Klick werden wie gewünscht alle Fenster minimiert.
Aber leider bleibt es dabei. D.h. weitere Mausklicks zeigen die minimierten Fenster nicht wieder an!
Eigentlich meine ich mich genau an Microsoft Docs gehalten zu haben. Aber offensichtlich mache ich etwas falsch.
Vielleicht kennt sich ja jemand mit dem Dingens aus und kann mir nachsichtig auf die Sprünge helfen.
LG
Peter