Цитата FlatX007:
если панель не внизу - то окошко создаётся посередине десктопа »
|
А можно определить где панель находится, и соответственно пристыковывать GUI к нижнему правому краю:
Код:
#include <GUIConstantsEx.au3>
$hGUI = GUICreate("_WinMoveAboveTaskBar Demo", 200, 500)
GUISetState(@SW_SHOW)
_WinStickToRightCorner($hGUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _WinStickToRightCorner($hWin)
Local $aWin_Pos = WinGetPos($hWin)
Local $aClient_Size = WinGetClientSize($hWin)
Local $iBorder_Width = ($aWin_Pos[2] - $aClient_Size[0])
Local $iCaption_Height = ($aWin_Pos[3] - $aClient_Size[1])
Local Const $SPI_GETWORKAREA = 48
Local $stRECT = DllStructCreate("long;long;long;long")
Local $SPIRet = DllCall("User32.dll", "int", "SystemParametersInfo", _
"uint", $SPI_GETWORKAREA, "uint", 0, "ptr", DllStructGetPtr($stRECT), "uint", 0)
If @error Or $SPIRet[0] = 0 Then Return SetError(1, 0, 0)
Local $sRightArea = DllStructGetData($stRECT, 3)
Local $sBottomArea = DllStructGetData($stRECT, 4)
Local $iTop = (@DesktopHeight-(@DesktopHeight-$sBottomArea)-$aClient_Size[1]) - $iCaption_Height
Local $iLeft = (@DesktopWidth-$aClient_Size[0]) - $iBorder_Width
If $sRightArea < @DesktopWidth Then $iLeft -= (@DesktopWidth - $sRightArea)
WinMove($hWin, "", $iLeft, $iTop)
EndFunc