By
FMS
Hello,
At this moment I'm trying to make a RDP tool to make multiple connections and switch between them.
Curently I'm having troubles in making multiple connections and got some error's.
I know why I get the error's (trying to change a active connection) but I'm not sure how to solve this.
Does somebody know a cleaver way to make it scalable into more connections in the same embeded window?
Also I'm open for sugestions for making this code better
Below the code I'm working on at the moment:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <File.au3>
#Include <GuiComboBoxEx.au3>
Global $configfile = @ScriptDir & "\config.rto"
Global $configarray[0][0]
Global $RDP_id = False
Global $RDP_name = False
Global $RDP_ip = False
Global $RDP_usr = False
Global $RDP_dom = False
Global $RDP_pass = False
$Form1 = GUICreate("Form1",952, 675, -1, -1, $WS_OVERLAPPEDWINDOW + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
$Combo1 = GUICtrlCreateCombo("Combo1", 8, 8, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$Button1 = GUICtrlCreateButton("Connect", 160, 8, 75, 25)
$Button2 = GUICtrlCreateButton("Disconnect", 240, 8, 75, 25)
$Button3 = GUICtrlCreateButton("Button3", 320, 8, 75, 25)
$oRDP = ObjCreate("MsTscAx.MsTscAx.10")
$oRDP_Ctrl = GUICtrlCreateObj($oRDP, 64, 44, 800, 600)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlSetStyle($oRDP_Ctrl , $WS_VISIBLE)
GUISetState(@SW_SHOW)
fetch_config()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Combo1
set_config(GUICtrlRead($Combo1))
Case $Button1
$oRDP.DesktopWidth = 800
$oRDP.DesktopHeight = 600
$oRDP.Fullscreen = False
$oRDP.ColorDepth = 16
$oRDP.AdvancedSettings3.SmartSizing = True
$oRDP.Server = $RDP_ip
$oRDP.UserName = $RDP_usr
$oRDP.Domain = $RDP_dom
$oRDP.AdvancedSettings2.ClearTextPassword = $RDP_pass
$oRDP.ConnectingText = "Connecting to " & $RDP_ip
$oRDP.DisconnectedText = "Disconnected from " & $RDP_ip
$oRDP.StartConnected = True
$oRDP.Connect()
Case $Button2
$oRDP.Disconnect()
Case $Button3
WinSetState($oRDP_Ctrl, "", @SW_HIDE)
EndSwitch
WEnd
Func cmdkey()
;cmdkey /generic:TERMSRV/ip1 /user:dom1\usr1 /pass:pass1
EndFunc
Func set_config($selected = GUICtrlRead($Combo1))
Local $found = False
Local $found_id = False
$RDP_id = False
$RDP_name = False
$RDP_ip = False
$RDP_usr = False
$RDP_dom = False
$RDP_pass = False
For $x = 1 To UBound($configarray,1) -1
If $selected = $configarray[$x][1] Then
;~ ConsoleWrite ($configarray[$x][0]& @CRLF & $configarray[$x][1]& @CRLF & $configarray[$x][2]& @CRLF & $configarray[$x][3]& @CRLF & $configarray[$x][4]& @CRLF & $configarray[$x][5]& @CRLF)
$found_id = $x
$found = True
EndIf
Next
If $found Then
$RDP_id = $configarray[$found_id][0]
$RDP_name = $configarray[$found_id][1]
$RDP_ip = $configarray[$found_id][2]
$RDP_usr = $configarray[$found_id][3]
$RDP_dom = $configarray[$found_id][4]
$RDP_pass = $configarray[$found_id][5]
Return True
Else
Return False
EndIf
EndFunc
Func fetch_config()
If FileExists($configfile) Then
;~ ReDim $configarray[0][0]
If _FileReadToArray($configfile, $configarray , 0 , "|") Then
_GUICtrlComboBox_ResetContent($Combo1)
_GUICtrlComboBox_BeginUpdate($Combo1)
;~ _GUICtrlComboBox_AddString($Combo1, "")
For $i = 1 To UBound($configarray,1) -1
_GUICtrlComboBox_AddString($Combo1, $configarray[$i][1])
Next
_GUICtrlComboBox_EndUpdate($Combo1)
_GUICtrlComboBox_SetCurSel($Combo1, 0)
If set_config(GUICtrlRead($Combo1)) Then
Return True
Else
Return False
EndIf
Else
Return False
EndIf
Else
If Not _FileCreate($configfile) Then
Return False
Else
Local $LC_fileSetTime = FileSetTime($configfile, @YEAR & @MON & @MDAY , $FT_CREATED)
If $LC_fileSetTime = 0 Then
Return False
Else
Local $set_rights = Run(@ComSpec & " /c icacls " & $configfile & " /grant Users:F" , "" , @SW_HIDE)
If Not $set_rights Then
Return False
Else
Local $file = FileOpen($configfile, 1)
If $file = -1 Then
Return False
Else
FileWrite($file, "ID|name|IP|username|domain|pass" & @CRLF)
FileWrite($file, "1|name1|ip1|name1|dom1|pass1" & @CRLF)
FileWrite($file, "2|name2|ip2|name2|dom2|pass2" & @CRLF)
EndIf
FileClose($file)
fetch_config()
Return True
EndIf
EndIf
EndIf
EndIf
EndFunc
edit :
error at reuse connection :
(51) : ==> The requested action with this object has failed.:
$oRDP.Connect()
$oRDP^ ERROR
>Exit code: 1 Time: 13.73