#NoTrayIcon
#include <WinAPI.au3>
#include <WindowsConstants.au3>
If Not (@OSVersion = 'WIN_XP' Or @OSVersion = 'WIN_XPe') Then Exit MsgBox(4096 + 16, 'Внимание!', 'Эта программа только для Windows XP.')
Global $hTrayWnd, $hTrayClock, $hGui, $iButt, $iButtColor, $iButtContext, $aGuiPos[4]
$hTrayWnd = WinGetHandle('[CLASS:Shell_TrayWnd]')
$hTrayClock = ControlGetHandle($hTrayWnd, '', 'TrayClockWClass1')
If @error Then Exit
_GuiPos()
$hGui = GUICreate('', $aGuiPos[2], $aGuiPos[3], $aGuiPos[0], $aGuiPos[1], BitOR($WS_POPUP, $WS_BORDER), $WS_EX_TOPMOST, $hTrayWnd)
$iButt = GUICtrlCreateButton('', -2, -2, $aGuiPos[2] + 4, $aGuiPos[3] + 4)
GUICtrlSetTip(-1, 'Свернуть все окна')
$iButtColor = PixelGetColor($aGuiPos[0] + ($aGuiPos[2] / 2), $aGuiPos[1] + ($aGuiPos[3] / 2))
GUICtrlSetBkColor(-1, $iButtColor) ; Цвет кнопки
$iButtContext = GUICtrlCreateMenuItem('Выход', GUICtrlCreateContextMenu($iButt))
GUISetState()
While 1
Switch GUIGetMsg()
Case $iButt ; .......... Левый клик мышки сворачивает окна
WinMinimizeAll()
Case $iButtContext ; ... Правый клик мышки вызывает контекстное меню "Выход"
Exit
EndSwitch
If Not _GuiPos(True) = -1 Then
WinMove($hGui, '', $aGuiPos[0], $aGuiPos[1], $aGuiPos[2], $aGuiPos[3], 10)
GUICtrlSetPos($iButt, -2, -2, $aGuiPos[2] + 4, $aGuiPos[3] + 4)
EndIf
WEnd
Func _GuiPos($f = False)
Local $aWinPos, $aTCPos
$aWinPos = WinGetPos($hTrayWnd)
If $f And ($aWinPos[1] = $aGuiPos[1] And $aWinPos[3] = $aGuiPos[3]) Then Return -1
$aTCPos = ControlGetPos($hTrayWnd, '', $hTrayClock)
If @error Then Return 0
$aGuiPos[0] = $aTCPos[0] + $aTCPos[2] ; ................... X
$aGuiPos[1] = $aWinPos[1] ; ............................... Y
$aGuiPos[2] = $aWinPos[2] - ($aTCPos[0] + $aTCPos[2]) ; ... width
$aGuiPos[3] = $aWinPos[3] ; ............................... height
EndFunc ;==>_GuiPos