Alle Fenster minimieren

Veröffentlicht: 12. Nov 2001 | Aktualisiert: 13. Jun 2004

Von Mathias Schiffer

Seit Windows 95 bereits können Sie alle Desktopfenster durch ein Kontextmenü in der Taskleiste oder bei entsprechender Tastatur durch eine Betätigung der Windows-Taste in Verbindung mit der Taste M ausblenden, um freien Blick auf Ihren Desktop zu erhalten. Nehmen Sie die Shift-Taste zusätzlich mit in diese Tastenkombination auf, stellen Sie danach den vorherigen Zustand wieder her. Seit Windows 98 und in Windows CE findet der Anwender hierfür praktischerweise sogar gleich ein Icon in seiner Taskleiste, das diese Aufgabe für ihn per Mausklick übernehmen kann.

Um diese Funktionalität auch in Ihrer Anwendung zu nutzen, können Sie die beschriebenen Tastenkombinationen "Strg+M" und "Shift+Strg+M" über die API-Funktion keybd_event simulieren. Die folgende, flexible Funktion ToggleDesktop zeigt auf, wie Sie diesen Tastatur-Trick (auch mit Tastaturen ohne Windows-Taste) anwenden können:


' API-Deklarationen: 
Private Declare Sub keybd_event _ 
  Lib "user32" ( _ 
  ByVal bVk As Byte, _ 
  ByVal bScan As Byte, _ 
  ByVal dwFlags As Long, _ 
  ByVal dwExtraInfo As Long) 

Private Const KEYEVENTF_KEYUP As Long = &H2 ' Taste lösen 
Private Const VK_LWIN As Byte = &H5B        ' Linke Windows-Taste 

' ToggleDesktop blendet alle Anwendungsfenster auf Ihrem 
' Desktop aus oder wieder ein. Sofern der Parameter Minimize nicht 
' übergeben wird, wird dabei alternierend vorgegangen. Welchen 
' Zustand die Funktion bewirkt hat, können Sie ihrem Rückgabewert 
' entnehmen: Wird True geliefert, wurden die Anwendungsfenster 
' minimiert, bei False wurden sie wieder hergestellt. 
Private Function ToggleDesktop(Optional ByVal Minimize As Variant) As Boolean 
Static AllMinimized As Boolean 

  ' Alternieren der letzten Anforderung: 
  AllMinimized = Not AllMinimized 

  ' Wurde Minimize übergeben, dessen Wert verwenden: 
  If Not IsMissing(Minimize) Then AllMinimized = Minimize 
  ' Bei Bedarf Shift niederdrücken: 
  If AllMinimized = False Then 
    keybd_event vbKeyShift, 0, 0, 0 
  End If 

  ' Linke Windows-Taste und M niederdrücken: 
  keybd_event VK_LWIN, 0, 0, 0 
  keybd_event vbKeyM, 0, 0, 0 

  ' M und linke Windows-Taste wieder lösen 
  keybd_event vbKeyM, 0, KEYEVENTF_KEYUP, 0 
  keybd_event VK_LWIN, 0, KEYEVENTF_KEYUP, 0 

  ' Bei Bedarf Shift wieder lösen 
  If AllMinimized = False Then 
    keybd_event vbKeyShift, 0, KEYEVENTF_KEYUP, 0 
  End If 

  ' Status zurückgeben 
  ToggleDesktop = AllMinimized 

End Function

Weitere Informationen zu den eingesetzten API-Funktionen und ihrer Bedienung finden Sie in Ihrer MSDN Library oder im US-MSDN Online.