MapYourDrive

  • ciao!

    Ich habe nach langer Zeit wieder ein wenig mit Autoit gespielt.
    Mein neues Script dient dazu Netzlaufwerke zu mappen.

    Bevor jetzt einer kommt und einen doofen Kommentar abgibt, ja ich weiss es gibt sicher 1000 solcher NetzlaufwerkMapScripte.
    Es geht aber darum, es selber zu probieren :)

    Ich habe einigen Fehler in diesem Script, jedoch weiss ich nicht genau wie sie zu beseitigen.

    Im Anhang noch ein Bild, was die "Anzeige" Fehler beschreiben.

    Spoiler anzeigen
    [autoit]

    #include <Constants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <Misc.au3>
    ;~ #include <NoFocusLines.au3>
    #include <Array.au3>
    #include <ComboConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('GUIOnEventMode', 1)
    AdlibRegister("_Update", 500)
    ;~ _NoFocusLines_Global_Set()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;~ @echo off

    [/autoit] [autoit][/autoit] [autoit]

    ;~ :: set variables
    ;~ set driveletter=
    ;~ set servername=
    ;~ set share=
    ;~ set user=
    ;~ set pw=

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;~ :: batch start
    ;~ net use %driveletter% \\%servername%\%share% /user:%user% "%pw%" /persistent:no

    [/autoit] [autoit][/autoit] [autoit]

    Global $title01 = "MapYourDrive"
    Global $title02 = "Connection Info"
    Global $exec

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $sDrivesFree = _DriveLetterFree()
    $sFirstDrive = StringLeft($sDrivesFree, 3)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $gui01 = GUICreate($title01, 240, 400, @DesktopWidth / 2 - 160, 50,BitXOR($GUI_SS_DEFAULT_GUI, $WS_MINIMIZEBOX))
    GuiSetState(@SW_SHOW, $gui01)
    GUISetOnEvent($GUI_EVENT_CLOSE,"_End")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateGroup($title02, 10, 5, 220, 380) ; create group 'info'
    $label01 = GUICtrlCreateLabel("SERVERNAME", 20, 30, 200)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font
    $input01 = GUICtrlCreateInput('', 20, 50, 200, 25)
    GUICtrlSetBkColor(-1, 0xff9393)
    GUICtrlSetFont(-1, 14, 800, 0, 'Courier New') ; set the font

    [/autoit] [autoit][/autoit] [autoit]

    $label02 = GUICtrlCreateLabel("SHARE", 20, 90)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font
    $input02 = GUICtrlCreateInput('', 20, 110, 200, 25)
    GUICtrlSetBkColor(-1, 0xff9393)
    GUICtrlSetFont(-1, 14, 800, 0, 'Courier New') ; set the font

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $label03 = GUICtrlCreateLabel("USERNAME", 20, 150, 200)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font
    $input03 = GUICtrlCreateInput('', 20, 170, 200, 25)
    GUICtrlSetFont(-1, 14, 800, 0, 'Courier New') ; set the font

    [/autoit] [autoit][/autoit] [autoit]

    $label04 = GUICtrlCreateLabel("PASSWORD", 20, 210, 200)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font
    $input04 = GUICtrlCreateInput('', 20, 230, 200, 25, $ES_PASSWORD)
    GUICtrlSetFont(-1, 14, 800, 0, 'Courier New') ; set the font

    [/autoit] [autoit][/autoit] [autoit]

    $label05 = GUICtrlCreateLabel("DRIVE LETTER", 20, 270, 200)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font

    [/autoit] [autoit][/autoit] [autoit]

    $hCombo = GUICtrlCreateCombo("", 20, 292, 200, 25, $CBS_DROPDOWNLIST)
    GUICtrlSetData(-1, $sDrivesFree, $sFirstDrive)

    [/autoit] [autoit][/autoit] [autoit]

    $button01 = GUICtrlCreateButton("CONNECT", 19, 330, 80, 25)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font
    GUICtrlSetOnEvent(-1, '_Execute')

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;~ $menu = GUICtrlCreateMenu('&File')
    ;~ --------------------------------------------------
    ;~ GUICtrlCreateMenuItem('Beenden', $menu)
    ;~ GUICtrlSetOnEvent(-1, '_End')
    ;~ --------------------------------------------------
    ;~ $menu_help = GUICtrlCreateMenu('&Help')
    ;~ GUICtrlCreateMenuItem('About', $menu_help)
    ;~ GUICtrlSetOnEvent(-1, '_About')
    ;~ --------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _End()
    Exit
    EndFunc ;==>_End

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _About()
    MsgBox(262144 + 64, "About", "MapYourDrive - Version 1.0.0 - 08.02.2013")
    EndFunc ;==>_About

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Update()
    If GUICtrlRead($input01) = "" Then
    $check_input01 = False
    GUICtrlSetBkColor($input01, 0xff9393)
    Else
    $check_input01 = True
    GUICtrlSetBkColor($input01, 0xddffdd)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If GUICtrlRead($input02) = "" Then
    $check_input02 = False
    GUICtrlSetBkColor($input02, 0xff9393)
    Else
    $check_input02 = True
    GUICtrlSetBkColor($input02, 0xddffdd)
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $check_input01 = 1 And $check_input02 = 1 Then
    GUICtrlSetState($button01, $GUI_ENABLE)
    Else
    GUICtrlSetState($button01, $GUI_DISABLE)
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $sDrivesFree = _DriveLetterFree()
    $sFirstDrive = StringLeft($sDrivesFree, 3)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Execute()

    [/autoit] [autoit][/autoit] [autoit]

    $driveletter = StringLeft(GUICtrlRead($hCombo), 2)

    [/autoit] [autoit][/autoit] [autoit]

    if ( GUICtrlRead($input03) = "" OR GUICtrlRead($input04) = "" ) Then
    $exec = "net use " & $driveletter & " \\" & GUICtrlRead($input01) & "\" & GUICtrlRead($input02) & " /persistent:no"
    Else
    $exec = "net use " & $driveletter & " \\" & GUICtrlRead($input01) & "\" & GUICtrlRead($input02) & " " & "/user:" & GUICtrlRead($input03) & " " & GUICtrlRead($input04) & " /persistent:no"
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite( $exec & @CRLF)
    Run( @ComSpec & ' /c' & $exec)

    [/autoit] [autoit][/autoit] [autoit]

    $sDrivesFree = _DriveLetterFree()
    $sFirstDrive = StringLeft($sDrivesFree, 3)
    GUICtrlSetData($hCombo, "", "")
    GUICtrlSetData($hCombo, $sDrivesFree, $sFirstDrive)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $mapped_network_drives = DriveGetDrive("NETWORK")
    _ArraySearch($mapped_network_drives, $driveletter)
    If NOT @error Then
    Run('explorer.exe '& $driveletter)
    Endif

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_End

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _DriveLetterFree()
    Local $i, $v, $j, $letters, $aAllDrives = DriveGetDrive('ALL')
    For $i = 67 To 90 ; Buchstaben 'C' bis 'Z' durchgehen
    $v = True
    For $j = 1 To $aAllDrives[0] ; Alle belegten Buchstaben
    If Chr($i) & ':' = $aAllDrives[$j] Then ; Buchstabe ist nicht frei
    $v = False ; dann kennzeichnen
    ExitLoop ; und For $j - Schleife verlassen
    EndIf
    Next
    If $v Then $letters &= Chr($i) & ':\|' ; War der Buchstabe noch frei, dann in die Liste übernehmen
    Next
    Return StringTrimRight($letters, 1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit 0
    EndSwitch
    Wend

    [/autoit]


    [Blockierte Grafik: http://s1.directupload.net/images/130209/45ust7kr.png]

    2 Mal editiert, zuletzt von satinez (9. Februar 2013 um 20:46)

  • Ich weiß nich ob das hilft aber versuch es mal indem du bei dem Label "Drive Letter" diesen Command drunter setzt.
    GUICtrlSetBkColor(-1,-2)
    dann müsste die obere Linie wiederkommen. ( Bild 1 )

  • Danke, leider hilft der Befehl

    [autoit]

    GUICtrlSetBkColor(-1,-2)

    [/autoit]

    bei mir nicht weiter.

    Ich habe den Quelltext von Scite aus kopiert und dann ein Spoiler erstellt, den AutoIt-Code Button geklickt und dazwischen meinen Quellcode eingefügt.
    In Scite ist er nichtso zusehen...komisch.

  • ich meine ,wenn du auf Bearbeiten in Post 1 klickst, oben Quellcode und nicht ! Editor auswählst, dort nochmal den Code in Spoiler reinkopiern und Speichern

    Edit : kann es sein , dass das Label von der Höhe die Combo überdeckt.
    Will/kann es grad net testen, weil ich keinen Lust habe, den Code auseinanderzupflücken ;)

  • ja, ich hab Win7 64-bit.
    Die ersten 2 Fehler kann ich net bestätigen

    Den 3ten gibt es nur, wenn ich per TAB den Fokus auf die Combo bekomme.
    Dies ist aber normal, soweit ich weiß, kann jetzt aber auch ent sagen, ob/wie man das wegbekommt

  • Okey vielen Dank :)

    Ich denke ich lasse es mal so.
    Ja der erste Fehler konnte ich beheben, nach deinem Tipp. Habe die Box 1-2px nach unten verschoben :)

  • 1)
    Wie bekomme ich das hin, dass immer aktuelle Werte der aktiven Netzlaufwerke in der Combo vorhanden ist?
    Wenn ich dies in die Schleife einbinde, kann der User anhand des UpdateIntervalls kein Element in der Combo auswählen, weil es immer wieder refresht :(

    2)
    Wie kann ich eine "korrektes" Zusammenspiel mit der CMD bewerkstelligen, ohne das CMD Fenster zu sehen, wenn Fehler auftreten?
    Wie kann ich CMD Fehler abfangen und entsprechend reagieren?

    3) Wie bekomme ich dieses Flackern aus den Inputs .. ?

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <ComboConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('GUIOnEventMode', 1)
    AdlibRegister("_Update", 500)

    [/autoit] [autoit][/autoit] [autoit]

    ;~ :: batch file
    ;~ 01 :: net use %driveletter% \\%servername%\%share% /persistent:no
    ;~ 02 :: net use %driveletter% \\%servername%\%share% /user:%user% "%pw%" /persistent:no

    [/autoit] [autoit][/autoit] [autoit]

    Global $title01 = "MapYourDrive"
    Global $title02 = "Connection Info"
    Global $exec
    $sDrivesFree = _DriveLetterFree()
    $sFirstDrive = StringLeft($sDrivesFree, 3)

    [/autoit] [autoit][/autoit] [autoit]

    #region ### START Koda GUI section ### Form=
    $gui01 = GUICreate($title01, 240, 400, @DesktopWidth / 2 - 160, 50, BitXOR($GUI_SS_DEFAULT_GUI, $WS_MINIMIZEBOX))
    GUISetState()
    GUISetOnEvent($GUI_EVENT_CLOSE,"_End")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateGroup($title02, 10, 5, 220, 380) ; create group 'info'
    $label01 = GUICtrlCreateLabel("SERVERNAME", 20, 30, 200)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font
    $input01 = GUICtrlCreateInput('', 20, 50, 200, 25)
    GUICtrlSetBkColor(-1, 0xff9393)
    GUICtrlSetFont(-1, 14, 800, 0, 'Courier New') ; set the font

    [/autoit] [autoit][/autoit] [autoit]

    $label02 = GUICtrlCreateLabel("SHARE", 20, 90)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font
    $input02 = GUICtrlCreateInput('', 20, 110, 200, 25)
    GUICtrlSetBkColor(-1, 0xff9393)
    GUICtrlSetFont(-1, 14, 800, 0, 'Courier New') ; set the font

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $label03 = GUICtrlCreateLabel("USERNAME", 20, 150, 200)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font
    $input03 = GUICtrlCreateInput('', 20, 170, 200, 25)
    GUICtrlSetFont(-1, 14, 800, 0, 'Courier New') ; set the font

    [/autoit] [autoit][/autoit] [autoit]

    $label04 = GUICtrlCreateLabel("PASSWORD", 20, 210, 200)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font
    $input04 = GUICtrlCreateInput('', 20, 230, 200, 25, $ES_PASSWORD)
    GUICtrlSetFont(-1, 14, 800, 0, 'Courier New') ; set the font

    [/autoit] [autoit][/autoit] [autoit]

    $label05 = GUICtrlCreateLabel("DRIVE LETTER", 20, 270, 200)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font

    [/autoit] [autoit][/autoit] [autoit]

    $hCombo = GUICtrlCreateCombo("", 20, 292, 200, 25, $CBS_DROPDOWNLIST)
    GUICtrlSetData(-1, $sDrivesFree, $sFirstDrive)

    [/autoit] [autoit][/autoit] [autoit]

    $button01 = GUICtrlCreateButton("CONNECT", 19, 330, 80, 25)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font
    GUICtrlSetOnEvent(-1, '_Execute')

    [/autoit] [autoit][/autoit] [autoit]

    ; create the menu
    $menu = GUICtrlCreateMenu('&File')

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateMenuItem('Exit', $menu)
    GUICtrlSetOnEvent(-1, '_End')

    [/autoit] [autoit][/autoit] [autoit]

    $menu_help = GUICtrlCreateMenu('&Help')
    GUICtrlCreateMenuItem('About', $menu_help)
    GUICtrlSetOnEvent(-1, '_About')

    [/autoit] [autoit][/autoit] [autoit]

    #endregion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _End()
    Exit
    EndFunc ;==>_End

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _About()
    MsgBox(262144 + 64, "About", "MapYourDrive - Version 1.0.0 - 08.02.2013")
    EndFunc ;==>_About

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Update()
    If GUICtrlRead($input01) = "" Then
    $check_input01 = False
    GUICtrlSetBkColor($input01, 0xff9393)
    Else
    $check_input01 = True
    GUICtrlSetBkColor($input01, 0xddffdd)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If GUICtrlRead($input02) = "" Then
    $check_input02 = False
    GUICtrlSetBkColor($input02, 0xff9393)
    Else
    $check_input02 = True
    GUICtrlSetBkColor($input02, 0xddffdd)
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $check_input01 = 1 And $check_input02 = 1 Then
    GUICtrlSetState($button01, $GUI_ENABLE)
    Else
    GUICtrlSetState($button01, $GUI_DISABLE)
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $sDrivesFree = _DriveLetterFree()
    Global $sFirstDrive = StringLeft($sDrivesFree, 3)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($hCombo, $sDrivesFree, $sFirstDrive)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Execute()
    ;~ remove '1' character from the right side
    $driveletter = StringTrimRight( GUICtrlRead($hCombo), 1 )

    [/autoit] [autoit][/autoit] [autoit]

    if ( GUICtrlRead($input03) = "" OR GUICtrlRead($input04) = "" ) Then
    $exec = "net use " & $driveletter & " \\" & GUICtrlRead($input01) & "\" & GUICtrlRead($input02) & " /persistent:no"
    Else
    $exec = "net use " & $driveletter & " \\" & GUICtrlRead($input01) & "\" & GUICtrlRead($input02) & " " & "/user:" & GUICtrlRead($input03) & " " & GUICtrlRead($input04) & " /persistent:no"
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite( $exec & @CRLF)
    Run( @ComSpec & ' /c' & $exec)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($input01, "", "")
    GUICtrlSetData($input02, "", "")

    [/autoit] [autoit][/autoit] [autoit]

    sleep(2000)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($hCombo, $sDrivesFree, $sFirstDrive)

    [/autoit] [autoit][/autoit] [autoit]

    $mapped_network_drives = DriveGetDrive("NETWORK")
    _ArraySearch($mapped_network_drives, $driveletter)
    If NOT @error Then
    Run('explorer.exe '& $driveletter)
    Endif

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_End

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _DriveLetterFree()
    Local $i, $v, $j, $letters, $aAllDrives = DriveGetDrive('ALL')
    For $i = 67 To 90 ; Buchstaben 'C' bis 'Z' durchgehen
    $v = True
    For $j = 1 To $aAllDrives[0] ; Alle belegten Buchstaben
    If Chr($i) & ':' = $aAllDrives[$j] Then ; Buchstabe ist nicht frei
    $v = False ; dann kennzeichnen
    ExitLoop ; und For $j - Schleife verlassen
    EndIf
    Next
    If $v Then $letters &= Chr($i) & ':\|' ; War der Buchstabe noch frei, dann in die Liste übernehmen
    Next
    Return StringTrimRight($letters, 1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit 0
    EndSwitch
    Wend

    [/autoit]

    lg

    Einmal editiert, zuletzt von satinez (11. Februar 2013 um 15:06)

  • das erste was mir gleich auffällt :
    Du verschalchtelst hier den OnEvent-Modus zusammen mit Message-Loop
    Entscheide dich für eins von beiden. (ich würde OnEvent nehmen)

    und verwende sowas :

    [autoit]

    if (_GUICtrlComboBox_GetList($hCombo)<> $sDrivesFree) Then GUICtrlSetData($hCombo,"|" & $sDrivesFree, $sFirstDrive) ; entsprechenden Include net vergessen

    [/autoit]

    Einmal editiert, zuletzt von Alcros (11. Februar 2013 um 16:11)

  • Hammergeil, danke :)

    Spoiler anzeigen
    [autoit]

    #include <GuiComboBox.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <ComboConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('GUIOnEventMode', 1)
    AdlibRegister("_Update", 200)

    [/autoit] [autoit][/autoit] [autoit]

    ;~ :: batch file
    ;~ 01 :: net use %driveletter% \\%servername%\%share% /persistent:no
    ;~ 02 :: net use %driveletter% \\%servername%\%share% /user:%user% "%pw%" /persistent:no

    [/autoit] [autoit][/autoit] [autoit]

    Global $title01 = "MapYourDrive"
    Global $title02 = "Connection Info"
    Global $exec
    $sDrivesFree = _DriveLetterFree()
    $sFirstDrive = StringLeft($sDrivesFree, 3)

    [/autoit] [autoit][/autoit] [autoit]

    #region ### START Koda GUI section ### Form=
    $gui01 = GUICreate($title01, 240, 400, @DesktopWidth / 2 - 160, 50, BitXOR($GUI_SS_DEFAULT_GUI, $WS_MINIMIZEBOX))
    GUISetState()
    GUISetOnEvent($GUI_EVENT_CLOSE,"_End")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateGroup($title02, 10, 5, 220, 380) ; create group 'info'
    $label01 = GUICtrlCreateLabel("SERVERNAME", 20, 30, 200)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font

    [/autoit] [autoit][/autoit] [autoit]

    $input01 = GUICtrlCreateInput('', 20, 50, 200, 25)
    GUICtrlSetBkColor(-1, 0xff9393)
    GUICtrlSetFont(-1, 14, 800, 0, 'Courier New') ; set the font
    GUICtrlSetData(-1, "192.168.1.177")

    [/autoit] [autoit][/autoit] [autoit]

    $label02 = GUICtrlCreateLabel("SHARE", 20, 90)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font

    [/autoit] [autoit][/autoit] [autoit]

    $input02 = GUICtrlCreateInput('', 20, 110, 200, 25)
    GUICtrlSetBkColor(-1, 0xff9393)
    GUICtrlSetFont(-1, 14, 800, 0, 'Courier New') ; set the font
    GUICtrlSetData(-1, "transfer")

    [/autoit] [autoit][/autoit] [autoit]

    $label03 = GUICtrlCreateLabel("USERNAME", 20, 150, 200)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font
    $input03 = GUICtrlCreateInput('', 20, 170, 200, 25)
    GUICtrlSetFont(-1, 14, 800, 0, 'Courier New') ; set the font

    [/autoit] [autoit][/autoit] [autoit]

    $label04 = GUICtrlCreateLabel("PASSWORD", 20, 210, 200)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font
    $input04 = GUICtrlCreateInput('', 20, 230, 200, 25, $ES_PASSWORD)
    GUICtrlSetFont(-1, 14, 800, 0, 'Courier New') ; set the font

    [/autoit] [autoit][/autoit] [autoit]

    $label05 = GUICtrlCreateLabel("DRIVE LETTER", 20, 270, 200)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font

    [/autoit] [autoit][/autoit] [autoit]

    $hCombo = GUICtrlCreateCombo("", 20, 292, 200, 25, $CBS_DROPDOWNLIST)
    GUICtrlSetData(-1, $sDrivesFree, $sFirstDrive)

    [/autoit] [autoit][/autoit] [autoit]

    $button01 = GUICtrlCreateButton("CONNECT", 19, 330, 80, 25, $WS_DISABLED)
    GUICtrlSetFont(-1, 10, 0, 0, 'helvetica') ; set the font
    GUICtrlSetOnEvent(-1, '_Execute')

    [/autoit] [autoit][/autoit] [autoit]

    ; create the menu
    $menu = GUICtrlCreateMenu('&File')

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateMenuItem('Exit', $menu)
    GUICtrlSetOnEvent(-1, '_End')

    [/autoit] [autoit][/autoit] [autoit]

    $menu_help = GUICtrlCreateMenu('&Help')
    GUICtrlCreateMenuItem('About', $menu_help)
    GUICtrlSetOnEvent(-1, '_About')

    [/autoit] [autoit][/autoit] [autoit]

    #endregion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _End()
    Exit
    EndFunc ;==>_End

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _About()
    MsgBox(262144 + 64, "About", "MapYourDrive - Version 1.0.0 - 08.02.2013")
    EndFunc ;==>_About

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Update()
    If GUICtrlRead($input01) = "" Then
    $check_input01 = False
    GUICtrlSetBkColor($input01, 0xff9393)
    Else
    $check_input01 = True
    GUICtrlSetBkColor($input01, 0xddffdd)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If GUICtrlRead($input02) = "" Then
    $check_input02 = False
    GUICtrlSetBkColor($input02, 0xff9393)
    Else
    $check_input02 = True
    GUICtrlSetBkColor($input02, 0xddffdd)
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $check_input01 = 1 And $check_input02 = 1 Then
    GUICtrlSetState($button01, $GUI_ENABLE)
    Else
    GUICtrlSetState($button01, $GUI_DISABLE)
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $sDrivesFree = _DriveLetterFree()
    Global $sFirstDrive = StringLeft($sDrivesFree, 3)

    [/autoit] [autoit][/autoit] [autoit]

    if ( _GUICtrlComboBox_GetList($hCombo) <> $sDrivesFree) Then GUICtrlSetData($hCombo,"|" & $sDrivesFree, $sFirstDrive)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Execute()
    ;~ remove '1' character from the right side
    $driveletter = StringTrimRight( GUICtrlRead($hCombo), 1 )

    [/autoit] [autoit][/autoit] [autoit]

    if ( GUICtrlRead($input03) = "" OR GUICtrlRead($input04) = "" ) Then
    $exec = "net use " & $driveletter & " \\" & GUICtrlRead($input01) & "\" & GUICtrlRead($input02) & " /persistent:no"
    Else
    $exec = "net use " & $driveletter & " \\" & GUICtrlRead($input01) & "\" & GUICtrlRead($input02) & " " & "/user:" & GUICtrlRead($input03) & " " & GUICtrlRead($input04) & " /persistent:no"
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite( $exec & @CRLF)
    Run( @ComSpec & ' /c' & $exec)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($input01, "", "")
    GUICtrlSetData($input02, "", "")

    [/autoit] [autoit][/autoit] [autoit]

    sleep(2000)

    [/autoit] [autoit][/autoit] [autoit]

    ;~ GUICtrlSetData($hCombo, $sDrivesFree, $sFirstDrive)

    [/autoit] [autoit][/autoit] [autoit]

    $mapped_network_drives = DriveGetDrive("NETWORK")
    _ArraySearch($mapped_network_drives, $driveletter)
    If NOT @error Then
    Run('explorer.exe '& $driveletter)
    Endif

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_End

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _DriveLetterFree()
    Local $i, $v, $j, $letters, $aAllDrives = DriveGetDrive('ALL')
    For $i = 67 To 90 ; Buchstaben 'C' bis 'Z' durchgehen
    $v = True
    For $j = 1 To $aAllDrives[0] ; Alle belegten Buchstaben
    If Chr($i) & ':' = $aAllDrives[$j] Then ; Buchstabe ist nicht frei
    $v = False ; dann kennzeichnen
    ExitLoop ; und For $j - Schleife verlassen
    EndIf
    Next
    If $v Then $letters &= Chr($i) & ':\|' ; War der Buchstabe noch frei, dann in die Liste übernehmen
    Next
    Return StringTrimRight($letters, 1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1

    [/autoit] [autoit][/autoit] [autoit]

    Wend

    [/autoit]