Sign in to follow this  
Followers 0
arahming

RDP and AutoIT

10 posts in this topic

Scenerio: I have users that have to manually open twenty Remote Desktop connections shrink them to about 1 x 1/2 inch and place them on certian areas on the lower part of thier desktop cascaded. After they are placed the users than scrolls the open windows all the way to the right and 4 clicks down to display the data they need to see within the RDP sessions.  

I have been asked to automate this process as it taked forever to keep doing this evertime there is a problem and was wondering if thie is something AutoIT can do easily. I have only started looking into the program today and am on a short timeframe to do this so dont want to spend time on the impossible

any assitance would help and thanks in advance

 

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

What are you looking for on the remote stations?  Might be better to create a share, and run a script on each station that creates a status file on that share.  Then have another script to read in those files to a gui.

else, helpfile for:

Run()

Win* functions

Control* functions

winmove

Edited by jdelaney

IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.

Share this post


Link to post
Share on other sites

Would Remote Desktop Connection Manager not work better for them?

Download

Screenshots

Share this post


Link to post
Share on other sites

blckpythn is on the right track. There is also a 3rd party tool which pretty much does the same thing.

I understand you want to create this, but sometimes reinventing the wheel doesn't quite work out to be the best option.


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_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: 04/09/2015

Share this post


Link to post
Share on other sites

I have looked at the RDP connection manager the problem is that it shrinks the data they are viewing which is why they shrink the screen and focus on the area with the data they need to look at. the data is also real time turbine data viewed from on of our vendor scada programs so we do not have the ability to view it except through the rdp sessions

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

ok, so let's flow with your current and assume there is no vendor-supported method to retrieve the data to a central control panel, and that your RDP scenario is the best method they can come up with. how about this:

 

1) an AutoIt script running as a tray icon.

2) the tray icon has 20 items in it, each item notate a specific RDP session window.

3) when you select an item, the script does the following:

a. activates the notated RDP session window, and set focus to it, so it is on top of others

b. scrolls to the lower-right corner inside the window.

4) improvement: you can have another item notated "open all", and if allowed by your group policy, you make sure all your RDP sessions have a configuration file (.rdp file, if i'm not mistaken), so you do not need to enter credentials to connect. you put all .rdp files in one folder, and when you click "open all" item, the scripts launches all .rdp files found in that folder, and places them on the screen as you want.

question: how do your users know if any session requires attention? is it in the session itself, or is there an external notification?

Edited by orbs

Share this post


Link to post
Share on other sites

I had to test how 20 items would look in a tray menu.

#NoTrayIcon
#include <Constants.au3> ; Required for the $TRAY_CHECKED constant.

Opt('TrayMenuMode', 3) ; The default tray menu items will not be shown and items are not checked when selected. These are options 1 and 2 for TrayMenuMode.

Example()

Func Example()
    ; Create a tray item
    For $i = 1 To 19
        TrayCreateItem('Item ' & $i, -1, -1, 1)
    Next

    TrayCreateItem('') ; Create a separator line.

    Local $iAbout = TrayCreateItem('About')
    TrayCreateItem('') ; Create a separator line.

    Local $iExit = TrayCreateItem('Exit')

    TraySetState(1) ; Show the tray menu.

    While 1
        Switch TrayGetMsg()
            Case $iAbout ; Display a message box about the AutoIt version and installation path of the AutoIt executable.
                MsgBox($MB_SYSTEMMODAL, '', 'AutoIt tray menu example.' & @CRLF & @CRLF & _
                        'Version: ' & @AutoItVersion & @CRLF & _
                        'Install Path: ' & StringLeft(@AutoItExe, StringInStr(@AutoItExe, '\', Default, -1) - 1)) ; Find the folder of a full path.

            Case $iExit ; Exit the loop.
                ExitLoop
        EndSwitch
    WEnd
EndFunc   ;==>Example

_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_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: 04/09/2015

Share this post


Link to post
Share on other sites

yeah, that's what i was talking about. it would fit nicely in most screen resolutions. of course you can split to submenus, but i doubt it would be necessary or useful in this case. anyway i think the real action coding should not be too hard.

Share this post


Link to post
Share on other sites

The users scan the small area that the RDP has displayed if there are faults with turbines they will flash than the user will maximize that session and take care of the issue than they will minimize it again. I have asked them about several scenarios but they have stated they need to be able to see that area for each RDP session at all time. they are also multiple monitor users 4 in all so they are looking at these RDP sessions and several other applications. the open all scenario seems to be the one which will work the best If someone can point me to docs on manipulating windows forms for the scrolling and sizing of the RDP sessions that would be a good start

thanks

Share this post


Link to post
Share on other sites

#10 ·  Posted (edited)

so your windows are not cascaded, but visible along side each other. that makes it even more simple. you don't even need all items in the tray menu, just "open all" (for initial purpose) and "re-order all" (which the user should click when they are done working with any of the windows).

function WinMove will give you all you need for moving and resizing of windows (you will need to preset the size and position of every one of the windows, probably in an .ini file)

scrolling seems a bit more difficult, i'll see what i can find.

 

edit: for scrolling, maybe function _GUIScrollBars_ScrollWindow will be useful. but since the example seems too over-complicated to me at first glance, i believe someone can suggest an easier method.

Edited by orbs

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  
Followers 0