;----------------------------------------------------------------------------------------------------------------------- ; Function _SlideWindow($hWnd, [$iDirection=1 [, $Left=-1 [, $Top=-1 [, $Speed=2000]]]]) ; ; Description slide a window in/out from/to right/bottom/left/top in a given time ; ; Parameter $hWnd window -id ; $iDirection direction to slide in / out ; right: 1 / -1 top-right: 5 / -5 ; bottom: 2 / -2 bot.-right: 6 / -6 ; left: 3 / -3 bot.-left: 7 / -7 ; top: 4 / -4 top-left: 8 / -8 ; $Left window left position, default -1 (center) ; $Top window top position, default -1 (center) ; $Speed default 2000, used time in relationship to hardware, minimum=0 ; ; Note Don't work with minimized windows. Works with hidden windows. ; If $hWnd does'nt exist, the active window will be used ; ; Author BugFix (bugfix@autoit.de) ;----------------------------------------------------------------------------------------------------------------------- Func _SlideWindow($hWnd, $iDirection=1, $Left=-1, $Top=-1, $Speed=2000) Local $pos = WinGetPos($hWnd) Local $startX, $endX, $startY, $endY, $tpp, $x, $y If $Top = -1 Then $Top = (@DesktopHeight-$pos[3])/2 If $Left = -1 Then $Left = (@DesktopWidth-$pos[2])/2 If ( Not IsNumber($Speed) ) Or ( $Speed < 0 ) Then $Speed=2000 If ($iDirection < -8) Or ($iDirection = 0) Or ($iDirection > 8) Then $iDirection = 1 Switch $iDirection Case 1 $startX = @DesktopWidth $endX = $Left $tpp = Int($Speed/($startX-$Left)) For $i = $startX To $endX Step -1 WinMove($hWnd, '', $i, $Top) Sleep($tpp) Next Case 2 $startY = @DesktopHeight $endY = $Top $tpp = Int($Speed/($startY-$Top)) For $i = $startY To $endY Step -1 WinMove($hWnd, '', $Left, $i) Sleep($tpp) Next Case 3 $startX = 0-$pos[2] $endX = $Left $tpp = Int($Speed/($Left+$pos[2])) For $i = $startX To $endX Step 1 WinMove($hWnd, '', $i, $Top) Sleep($tpp) Next Case 4 $startY = 0-$pos[3] $endY = $Top $tpp = Int($Speed/($Top+$pos[3])) For $i = $startY To $endY Step 1 WinMove($hWnd, '', $Left, $i) Sleep($tpp) Next Case 5 $startX = @DesktopWidth $startY = 0-($pos[3]/2) $endX = $Left $endY = $Top $absX = $startX-$endX $absY = $endY-$startY $weg = Sqrt($absX^2 + $absY^2) $tpp = Int($Speed/$weg) $stepY = $absY/$absX For $i = $startX To $endX Step -1 WinMove($hWnd, '', $i, Int($startY)) Sleep($tpp) $startY += $stepY Next Case 6 $startX = @DesktopWidth $startY = @DesktopHeight-($pos[3]/2) $endX = $Left $endY = $Top $absX = $startX-$endX $absY = $endY-$startY $weg = Sqrt($absX^2 + $absY^2) $tpp = Int($Speed/$weg) $stepY = $absY/$absX For $i = $startX To $endX Step -1 WinMove($hWnd, '', $i, Int($startY)) Sleep($tpp) $startY += $stepY Next Case 7 $startX = 0-($pos[2]) $startY = @DesktopHeight-($pos[3]/2) $endX = $Left $endY = $Top $absX = $endX+Abs($startX) $absY = $endY-$startY $weg = Sqrt($absX^2 + $absY^2) $tpp = Int($Speed/$weg) $stepY = $absY/$absX For $i = $startX To $endX Step 1 WinMove($hWnd, '', $i, Int($startY)) Sleep($tpp) $startY += $stepY Next Case 8 $startX = 0-($pos[2]) $startY = 0-($pos[3]/2) $endX = $Left $endY = $Top $absX = $endX-$startX $absY = $endY+Abs($startY) $weg = Sqrt($absX^2 + $absY^2) $tpp = Int($Speed/$weg) $stepY = $absY/$absX For $i = $startX To $endX Step 1 WinMove($hWnd, '', $i, $startY) Sleep($tpp) $startY += $stepY Next Case -1 $startX = $pos[0] $tpp = Int($Speed/(@DesktopWidth-$startX)) For $i = $startX To @DesktopWidth Step 1 WinMove($hWnd, '', $i, $Top) Sleep($tpp) Next Case -2 $startY = $pos[1] $tpp = Int($Speed/(@DesktopHeight-$startY)) For $i = $startY To @DesktopHeight Step 1 WinMove($hWnd, '', $Left, $i) Sleep($tpp) Next Case -3 $startX = $pos[0] $startY = $pos[1] $endX = 0-$pos[2] $tpp = Int($Speed/($pos[2]+$startX)) For $i = $startX To $endX Step -1 WinMove($hWnd, '', $i, $Top) Sleep($tpp) Next Case -4 $startX = $pos[0] $startY = $pos[1] $endY = 0-$pos[3] $tpp = Int($Speed/($pos[3]+$startY)) For $i = $startY To $endY Step -1 WinMove($hWnd, '', $Left, $i) Sleep($tpp) Next Case -5 $startX = $pos[0] $startY = $pos[1] $endX = @DesktopWidth $endY = 0-$pos[3]/2 $absX = $endX-$startX $absY = $startY+Abs($endY) $weg = Sqrt($absX^2 + $absY^2) $tpp = Int($Speed/$weg) $stepY = $absY/$absX For $i = $startX To $endX Step 1 WinMove($hWnd, '', $i, Int($startY)) Sleep($tpp) $startY -= $stepY Next Case -6 $startX = $pos[0] $startY = $pos[1] $endX = @DesktopWidth $endY = @DesktopHeight-($pos[3]/2) $absX = $endX-$startX $absY = $endY-$startY $weg = Sqrt($absX^2 + $absY^2) $tpp = Int($Speed/$weg) $stepY = $absY/$absX For $i = $startX To $endX Step 1 WinMove($hWnd, '', $i, Int($startY)) Sleep($tpp) $startY += $stepY Next Case -7 $startX = $pos[0] $startY = $pos[1] $endX = 0-$pos[2] $endY = @DesktopHeight-($pos[3]/2) $absX = $startX+Abs($endX) $absY = $endY-$startY $weg = Sqrt($absX^2 + $absY^2) $tpp = Int($Speed/$weg) $stepY = $absY/$absX For $i = $startX To $endX Step -1 WinMove($hWnd, '', $i, Int($startY)) Sleep($tpp) $startY += $stepY Next Case -8 $startX = $pos[0] $startY = $pos[1] $endX = 0-$pos[2] $endY = 0-$pos[3]/2 $absX = $startX+Abs($endX) $absY = $startY+Abs($endY) $weg = Sqrt($absX^2 + $absY^2) $tpp = Int($Speed/$weg) $stepY = $absY/$absX For $i = $startX To $endX Step -1 WinMove($hWnd, '', $i, Int($startY)) Sleep($tpp) $startY -= $stepY Next EndSwitch EndFunc ;==>_SlideWindow