Jump to content
Sign in to follow this  
sb1920alk

Save and Restore Window Positions

Recommended Posts

sb1920alk

I'm trying to see if someone has already written a script like this. I would like to manually arrange my open program windows, then have the script take a snapshot of the size and position of all of the windows. After time passes and I've moved things around I would like to be able to run a script to restore my windows to the position and size previously saved. Taking it further, I would like it to start applications that aren't started if they're part of the collection of windows (for example if Outlook is one of the windows and I closed it while working, then the restore script would restart Outlook when necessary), and save and restore between multiple snapshots. These different snapshots could be for different types of tasks (development, emailing, browsing, or whatever).

Thanks,

Share this post


Link to post
Share on other sites
guinness

Here is an idea, edit for your own needs though.

Func _GetCurrentPosition()
    Local $aINISection[4] = ['SizeW', 'SizeH', 'PosX', 'PosY'], $aReturn[4] = [360, 230, -1, -1], $sINI = @ScriptDir & 'Settings.ini'
    For $i = 0 To 3
        $aReturn[$i] = IniRead($sINI, 'General', $aINISection[$i], $aReturn[$i])
    Next
    Return $aReturn
EndFunc   ;==>_GetCurrentPosition

Func _SetCurrentPosition($hHandle)
    Local $aINISection[4] = ['SizeW', 'SizeH', 'PosX', 'PosY'], $aReturn[4] = [360, 230, -1, -1]
    Local $aWinGetPos = WinGetPos($hHandle)
    If @error = 0 Then
        $aReturn[2] = $aWinGetPos[0]
        $aReturn[3] = $aWinGetPos[1]
    EndIf
    Local $aWinGetClientSize = WinGetClientSize($hHandle)
    If @error = 0 Then
        $aReturn[0] = $aWinGetClientSize[0]
        $aReturn[1] = $aWinGetClientSize[1]
    EndIf
    For $i = 0 To 3
        If $aReturn[$i] > 0 Then
            IniWrite(@ScriptDir & 'Settings.ini', 'General', $aINISection[$i], $aReturn[$i])
        Else
            IniDelete(@ScriptDir & 'Settings.ini', 'General', $aINISection[$i])
        EndIf
    Next
    Return $aReturn
EndFunc   ;==>_SetCurrentPosition

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites
AZJIO

I have three example to save the position and size of the window, but it depends on the complexity of the script in which those functions are to be used. Here's one example.

Edited by AZJIO

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×