und glaube das auch andere diese gebrauchen können,
poste ich sie einfach mal hier.
Die Funktion verschiebt ein Fenster in der unteren rechten Ecke am Bildschirm und beachtet dabei die TaskBar.
Code: Alles auswählen
Procedure MoveWindowAtTaskBar(hWnd, Gap)
If IsWindow_(hWnd) <> 0
Protected DesktopW.l, DesktopH.l
DesktopW = GetSystemMetrics_(#SM_CXSCREEN)
DesktopH = GetSystemMetrics_(#SM_CYSCREEN)
Protected W.RECT, WindowW.l, WindowH.l
GetWindowRect_(hWnd, @W)
WindowW = W\right - W\left
WindowH = W\bottom - W\top
Protected TaskBar.APPBARDATA, TaskBarP.l, TaskBarW.l, TaskBarH.l
SHAppBarMessage_(#ABM_GETTASKBARPOS, TaskBar)
TaskBarP = TaskBar\uEdge
SHAppBarMessage_(#ABM_GETTASKBARPOS, TaskBar)
TaskBarW = DesktopW - TaskBar\rc\left
TaskBarH = DesktopH - TaskBar\rc\top
Select TaskBarP
Case #ABE_LEFT: MoveWindow_(hWnd, DesktopW - WindowW - Gap, DesktopH - WindowH - Gap, WindowW, WindowH, #True)
Case #ABE_TOP: MoveWindow_(hWnd, DesktopW - WindowW - Gap, DesktopH - WindowH - Gap, WindowW, WindowH, #True)
Case #ABE_RIGHT: MoveWindow_(hWnd, DesktopW - WindowW - TaskBarW - Gap, DesktopH - WindowH - Gap, WindowW, WindowH, #True)
Case #ABE_BOTTOM: MoveWindow_(hWnd, DesktopW - WindowW - Gap, DesktopH - WindowH - TaskBarH - Gap, WindowW, WindowH, #True)
EndSelect
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure