#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPISys.au3>
#Region ;==>_SHAppBarMessage
#include <StructureConstants.au3>
Global Const $tagAPPBARDATA = "DWORD cbSize; HWND hWnd; UINT uCallbackMessage; UINT uEdge;" & $tagRECT & ";LPARAM lParam"
Global Enum $ABM_NEW, _
$ABM_REMOVE, _
$ABM_QUERYPOS, _
$ABM_SETPOS, _
$ABM_GETSTATE, _
$ABM_GETTASKBARPOS, _
$ABM_ACTIVATE, _
$ABM_GETAUTOHIDEBAR, _
$ABM_SETAUTOHIDEBAR, _
$ABM_WINDOWPOSCHANGED, _
$ABM_SETSTATE, _
$ABM_GETAUTOHIDEBAREX, _
$ABM_SETAUTOHIDEBAREX
Global Enum $ABN_STATECHANGE, _
$ABN_POSCHANGED, _
$ABN_FULLSCREENAPP, _
$ABN_WINDOWARRANGE
Global Enum $ABE_LEFT, _
$ABE_TOP, _
$ABE_RIGHT, _
$ABE_BOTTOM
Global Enum $ABS_AUTOHIDE = 1, _
$ABS_ALWAYSONTOP
Func _SHAppBarMessage($iMessage, ByRef $tAPPBARDATA)
DllStructSetData($tAPPBARDATA, "cbSize", DllStructGetSize($tAPPBARDATA))
Local $aRet = DllCall("shell32.dll", "UINT_PTR", "SHAppBarMessage", "DWORD", $iMessage, "struct*", $tAPPBARDATA)
If @error Then SetError(@error, @extended, 0)
Return $aRet[0]
EndFunc ;==>_SHAppBarMessage
#EndRegion ;==>_SHAppBarMessage
Global $g_tAPPBARDATA
_Example()
Func _Example()
Local $tRect = _WinAPI_GetWorkArea()
Local $iBarW = $tRect.Right - $tRect.Left, $iBarH = 100
Local $iBarX = $tRect.Left, $iBarY = $tRect.Bottom - $iBarH
Local $hGUI = GUICreate("Пример", $iBarW, $iBarH, $iBarX, $iBarY, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW)
Local $idButton_Exit = GUICtrlCreateButton("Закрыть", 10, 10, $iBarW - 20, $iBarH - 20)
$g_tAPPBARDATA = DllStructCreate($tagAPPBARDATA)
$g_tAPPBARDATA.hWnd = $hGUI
$g_tAPPBARDATA.uEdge = $ABE_BOTTOM
$g_tAPPBARDATA.Left = $iBarX
$g_tAPPBARDATA.Top = $iBarY
$g_tAPPBARDATA.Right = $iBarX + $iBarW
$g_tAPPBARDATA.Bottom = $iBarY + $iBarH
_SHAppBarMessage($ABM_NEW, $g_tAPPBARDATA)
_SHAppBarMessage($ABM_SETPOS, $g_tAPPBARDATA)
OnAutoItExitRegister("_OnAutoItExit")
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $idButton_Exit
Exit
EndSwitch
WEnd
EndFunc ;==>_Example
Func _OnAutoItExit()
_SHAppBarMessage($ABM_REMOVE, $g_tAPPBARDATA)
EndFunc ;==>_OnAutoItExit