By
nitekram
I am trying to do something, but it appears that I am having issues with trying to get the right functions called, in the right order.
What I want to do is move a window to a certain position and then move it back, but as stated, the order appears to be an issue, as if the window is minimized, the wingetclientsize is not able to pull the info, not is the wingetpos. It appears to be able to get the size and position of the window in question is activated, but I have to activate it first, but that defeats the purpose, as once activated, the functions called to get the position and size, are not correct, as the screen is now active. I have tried to use wingetstate, to get the state first, but I am not sure how to move the window back to the original location with the right state.
If window is minimized, I want it to go back to minimized state, as well as keeping the window size the same, so if the user activates the window, the user does not have to resize it.
If the window is active and is on another screen, it appears I do not have the same issue.
Here is my attempt, but I have tried other combinations. Has anyone got an idea on how to resolve this issue?
Func MoveVNC($Move)
CreateLogEntry("Called MoveVNC($Move) $Move = " & $Move)
Local $aStartBar = StartBar()
Local $bMove = False
Local $VNC = 'NAMEOFWINDOW'
Static $aWin_VNC_Pos = ''
Static $iWin_VNC_State = ''
Static $aWin_VNC_Size = ''
#cs
;$aWin_VNC_Pos = WinGetPos($VNC, '')
MsgBox('','VNC POS','')
_ArrayDisplay(WinGetPos($VNC, ''))
MsgBox('','VNC STATE',WinGetState($VNC, ''))
WinActivate($VNC)
Sleep(20)
WinWaitActive($VNC, '', 10)
Sleep(20)
Local $aSize = WinGetClientSize($VNC, '')
MsgBox('','VNC SIZE','')
_ArrayDisplay($aSize)
#ce
If $Move = 'Get' Then
Opt("WinTitleMatchMode", -1) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase
If WinExists($VNC) Then
WinActivate($VNC)
Sleep(20)
WinWaitActive($VNC, '', 10)
Sleep(20)
$aWin_VNC_Pos = WinGetPos($VNC, '')
Sleep(20)
;_ArrayDisplay($aWin_VNC_Pos, '$aWin_VNC_Pos')
$iWin_VNC_State = WinGetState($VNC, '')
Sleep(20)
$aWin_VNC_Size = WinGetClientSize($VNC, '')
;_ArrayDisplay($aWin_VNC_Size)
;MsgBox('','$VNC',$VNC)
;MsgBox('', '$iWin_VNC_State', $iWin_VNC_State)
;WinSetState($VNC, '', @SW_MAXIMIZE)
;Sleep(20)
WinMove($VNC, '', 0, 0, 1600, 950) ; - (3 * $aStartBar[3])
Sleep(20)
;MouseClick('Left', 1764, 174)
$bMove = True
Else
MsgBox($MB_TOPMOST, 'ERROR GET', 'Window ' & $VNC & ' Does not exists - VNC is not running!')
EndIf
If Not $bMove Then
CreateLogEntry("MoveVNC(GET) FAILED")
Return False
Else
CreateLogEntry("MoveVNC(GET) PASSED")
Return True
EndIf
ElseIf $Move = 'Put' Then
CreateLogEntry("Called MoveVNC($Move) $Move = " & $Move)
If WinExists($VNC) Then
;WinSetState($VNC, '', @SW_RESTORE)
;If @error Then MsgBox('', '', @error)
;Sleep(20)
WinMove($VNC, '', $aWin_VNC_Pos[0], $aWin_VNC_Pos[1], $aWin_VNC_Pos[2], $aWin_VNC_Pos[3])
If @error Then MsgBox('', '', @error)
Sleep(20)
;WinSetState($VNC, '', $iWin_VNC_State)
;If @error Then MsgBox('', 'Not setting state', @error & ' ' & $VNC)
;Sleep(20)
$bMove = True
Else
MsgBox($MB_TOPMOST, 'ERROR PUT', 'Window ' & $VNC & ' Does not exists - VNC is not running!')
EndIf
If Not $bMove Then
CreateLogEntry("MoveVNC(PUT) FAILED")
Return False
Else
CreateLogEntry("MoveVNC(PUT) PASSED")
Return True
EndIf
EndIf
CreateLogEntry(" Returned from MoveVNC()")
EndFunc ;==>MoveVNC