wohin mit der Funktion

  • Hi,

    ich habe gerade in meinem Script einen Fehler entdeckt:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=world.ico
    #AutoIt3Wrapper_Outfile=exe\FirmaConnect.exe
    #AutoIt3Wrapper_Res_Comment=Firma Connect stellt eine VPN Verbindung zu Firmaher.
    #AutoIt3Wrapper_Res_Description=FirmaConnect
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Copyright © 2010 IT
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 1.0.0.0
    Author: Boris Wagener

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    FileInstall("PKV.jpg", "C:\Firma\FirmaConnect\PKV.jpg", 1)
    FileInstall("world.ico", "C:\Firma\FirmaConnect\world.ico", 1)
    FileInstall("Logon.wav", "C:\Firma\FirmaConnect\Logon.wav", 1)

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

    ; Script Start - Add your code below here

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

    #include <Inet.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <StaticConstants.au3>
    #include <Process.au3>
    #include <date.au3>
    #include <GuiEdit.au3>

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

    ;############################################################################################################################################################

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

    ; Wechsle in den OnEvent Modus
    Opt("GUIOnEventMode", 1)

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;Variablendeklaration
    $ProgramNameVersion = "FirmaConnect -Köln- " & FileGetVersion(@AutoItExe)
    $Testdomain = "www.google.de"
    $Testserver = "dc.firma.intern"
    $User = @UserName
    $LogonServer = @LogonServer

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

    $FileName = @ScriptDir & "\Logon_" & @YEAR & @MON & @MDAY & "_" & @HOUR & @MIN & @SEC & ".log"

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

    ; Die werden alle gebraucht und müssen vorher deklariert werden weil die GUIs in Functions ereugt werden
    Global $Mainform, $Childform, $fortschritt, $Pic1, $lbl_fortschritt, $lbl_info, $Label2,$Label3, $Einwahluser, $Input_user, $lbl_info2, $User, $lbl_passwort, $btn_verbinden, $btn_trennen, $Label1, $Group1, $chk_showpw, $lbl_ip
    ;Variablen in CheckOnProgUpdate
    ;~ Global $ProgramNameVersion, $FileName
    ;~ Global $DownloadDir = @ScriptDir & "\Download\firmaConnect.exe"

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

    ;~ #include "CheckOnProgUpdate.au3"

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

    #include "WriteLogData.au3"

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

    ;ESC bricht alles ab
    HotKeySet("{ESC}", "_Terminate")

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    If FileDelete(@ScriptDir & "\*.log") = 1 Then
    _WriteLogData("Alte LOG Datei wurde erfolgreich gelöscht.")
    EndIf

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

    ;Verknüpfung austauschen
    ;~ das kann in der nächsten Version wieder raus
    ;~ FileDelete( @DesktopDir & "\firmaConnect.lnk")
    ;~ FileCreateShortcut("C:\firma\firmaConnect\firmaConnect.exe", @DesktopDir & "\firmaConnect.lnk",@ScriptDir,"","", "C:\firma\firmaConnect\world.ico")

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    _WriteLogData("Programm : " & @ScriptName & ". Version=" & FileGetVersion(@ScriptName) & " mit Datum=" & FileGetTime(@ScriptName, 1, 1))
    _WriteLogData("firma Benutzer : " & @UserName)
    _WriteLogData("LogonServer : " & @LogonServer)
    _WriteLogData("LogonDomain : " & @LogonDomain)
    _WriteLogData("LogonDNSDomain : " & @LogonDNSDomain)
    _WriteLogData("Desktopverzeichnis: " & @DesktopCommonDir)
    _WriteLogData("---------------------------------------------------------------------")

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;Los gehts
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;Main GUI aufrufen
    _Mainform()

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

    ;ChildGui aufrufen, GuiSetState (@SW_HIDE), also versteckt. Diese GUI muss von Anfang an mitlaufen.
    _Childform()

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

    ;Controls ausblenden bis Internetverbindung überbrüft ist
    _Ausblenden()

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

    ; Prüfen ob schon eine PN Verindung besteht
    _VPNTest()

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

    ; Internet Verbindung testen, Controls einblenden, RadioButtos setzen, auf Passwort warten.
    ;Hier geht es erst weiter wenn der Verbinden Button gedruckt wird.
    ; ab dann _VPNConnect()
    _Startup()

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

    ;Antwortzeit der Verbindung ermitteln und in $Childgui anzeigen.
    _VPNStatus()

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

    ;Nicht die Reihenfolge er Function Aufrufe ändern!!!

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

    ;Hauptprogramm:-)
    While 1
    Sleep(500)
    WEnd

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;############################################################################################################################################################
    ; Funktionen
    ;############################################################################################################################################################
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;Mainform erstellen und anzeigen
    Func _Mainform()
    #Region ### START Koda GUI section ### Form=C:\Users\b.wagener\Desktop\firmaConnect V3\Form1.kxf
    $Mainform = GUICreate("firmaConnect 1.0", 397, 387, 273, 123)
    GUISetIcon(@ScriptDir & "\icon3.ico", -1)
    GUISetBkColor(0xFFFFFF)
    $Pic1 = GUICtrlCreatePic("firma.jpg", 72, 0, 254, 87, BitOR($GUI_SS_DEFAULT_PIC,$WS_CLIPSIBLINGS))
    $fortschritt = GUICtrlCreateProgress(32, 192, 335, 17, 0)
    $lbl_info = GUICtrlCreateLabel("", 32, 84, 335, 108, BitOR($SS_CENTER,$SS_SUNKEN))
    GUICtrlSetFont(-1, 10, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xD7E4F2)
    $lbl_passwort = GUICtrlCreateInput("", 158, 256, 161, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD))
    $Label1 = GUICtrlCreateLabel("Passwort:", 58, 256, 62, 20, 0)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $btn_verbinden = GUICtrlCreateButton("Verbinden", 120, 328, 155, 33, BitOR($BS_DEFPUSHBUTTON,$BS_PUSHLIKE,$BS_NOTIFY))
    GUICtrlSetOnEvent($btn_verbinden, "_VPNConnect")
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $chk_showpw = GUICtrlCreateCheckbox("Passwort anzeigen", 158, 288, 161, 17)
    GUICtrlSetOnEvent($chk_showpw, "_showpw")
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Input_user = GUICtrlCreateInput("", 158, 226, 161, 21);, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD))
    $Label2 = GUICtrlCreateLabel("Benutzername:", 58, 226, 93, 20, 0)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("Abbrechen mit [ESC]", 136, 368, 121, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    GUISetState(@SW_SHOW)
    _WriteLogData("Mainform erstellt")

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

    EndFunc ;==>_Mainform
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;Childform erstellen und anzeigen
    Func _Childform()

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

    $Childform = GUICreate("VPN- Status", 264, 116, 10, 10, BitOR($WS_CAPTION, $WS_POPUP, $WS_BORDER, $WS_CLIPSIBLINGS), BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE))
    GUISetIcon("C:\firma\firmaConnect\world.ico")
    GUISetBkColor(0xFFFFFF)
    $lbl_info2 = GUICtrlCreateLabel("", 8, 4, 247, 52, BitOR($SS_CENTER, $SS_SUNKEN))
    GUICtrlSetFont(-1, 9, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $btn_trennen = GUICtrlCreateButton("Trennen", 72, 80, 123, 25, $WS_GROUP)
    GUICtrlSetOnEvent($btn_trennen, "_VPNDisconnect")
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $lbl_ip = GUICtrlCreateLabel("", 8, 56, 245, 20, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUISetState(@SW_HIDE)
    _WriteLogData("Childform erstellt")
    EndFunc ;==>_Childform
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;~ Controls verstecken
    Func _Ausblenden()

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

    GUICtrlSetState($fortschritt, $gui_hide)
    GUICtrlSetState($lbl_fortschritt, $gui_hide)
    GUICtrlSetState($btn_verbinden, $gui_hide)
    GUICtrlSetState($lbl_passwort, $gui_hide)
    GUICtrlSetState($Label1, $gui_hide)
    GUICtrlSetState($Group1, $gui_hide)
    GUICtrlSetState($chk_showpw, $gui_hide)
    GUICtrlSetState($Label2, $gui_hide)
    GUICtrlSetState($Input_user, $gui_hide)
    GUICtrlSetState($Label3, $gui_hide)
    _WriteLogData("Controls ausgeblendet.")
    EndFunc ;==>_Ausblenden
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;Controls einblenden

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

    Func _Einblenden()
    GUICtrlSetState($fortschritt, $gui_show)
    GUICtrlSetState($lbl_fortschritt, $gui_show)
    GUICtrlSetState($Label1, $gui_show)
    GUICtrlSetState($lbl_passwort, $gui_show)
    GUICtrlSetState($btn_verbinden, $gui_show)
    GUICtrlSetState($Group1, $gui_show)
    GUICtrlSetState($chk_showpw, $gui_show)
    GUICtrlSetState($Label2, $gui_show)
    GUICtrlSetState($Input_user, $gui_show)
    GUICtrlSetState($Label3, $gui_show)
    _WriteLogData("Controls eingeblendet.")

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

    EndFunc ;==>_Einblenden
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _Startup()

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

    ;Test ob eine Internetverbindung besteht
    $InternetOK = _TestOnInternetConnect();

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

    ;Wenn ja Controls einblenden und Eingabe abwarten
    If $InternetOK = True Then
    _Einblenden()

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

    ;Wenn nicht auch einblenden und Verbindungsart auf UMTS setzen.
    ElseIf $InternetOK = False Then
    ;_Einblenden()

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

    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Es besteht keine Internet Verbindung." & @CRLF & @CRLF & "Bitte stellen Sie erst eine Internetverbindung her.")
    _WriteLogData("Keine Internetverbindung, .")
    Sleep(3000)
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "firmaConnect wird beendet." & @CRLF & @CRLF & "")
    Sleep(3000)
    _Terminate()
    EndIf

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

    GUICtrlSetData($lbl_info, @CRLF & "Bereit zum Verbinden." & @CRLF & @CRLF & "Bitte geben Sie Benutzername und Passwort ein," & @CRLF & "und klicken Sie auf Verbinden oder drücken Sie Enter.")
    GUICtrlSetState($Input_user, $GUI_FOCUS)

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

    EndFunc ;==>_Startup

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Abprüfen einer VPN-Verbindung

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

    Func _VPNTest()
    $PingOnServer1 = Ping($Testserver, 1000)

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

    ; Wenn die VPN-Verbindung nicht besteht wird das Unterprogramm StartVPNConnect aufgerufen
    If $PingOnServer1 > 0 Then
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Es besteht bereits eine VPN Verbindung.")
    _WriteLogData("VPN verbiondung besteht bereits. Antwortzeit: " & $PingOnServer1)
    Sleep(3000)
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "firma Connect wird beendet.")
    Sleep(1000)
    _Terminate()
    EndIf

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

    EndFunc ;==>_VPNTest
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Unterfunktion : Internetverbindung testen

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

    Func _TestOnInternetConnect()
    Local $PingVar, $RoundTrip ; $PingVar ist auch der Rückgabeparameter

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

    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Ein Moment bitte," & @CRLF & @CRLF & "Internetverbindung wird getestet.")
    Sleep(1000)

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

    For $RoundTrip = 1 To 3
    ; !!! Hier sollte nicht nur eine! Domain abgefragt werden
    $PingVar = Ping($Testdomain, 1000) ;Ping gibt die Antwortzeit in ms zurück

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

    If $PingVar <= 0 Then ; Wenn ping nicht erfolgreich war
    $PingVar = Ping($Testserver, 100) ; Ping gibt die Antwortzeit in ms zurück
    EndIf

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

    If $PingVar > 0 Then ; Wenn ein ping (Domäne oder Host)erfolgreich war
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Internetverbindung besteht." & @CRLF & @CRLF & "Die Antwortzeit beträgt " & $PingVar & " ms.")
    Sleep(500)
    _WriteLogData("Intenetverbindung besteht. Antwortzeit: " & $PingVar)
    Else
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Internetverbindung ist nicht erfolgt" & @CRLF & @CRLF & "Verbindung wird erneut getestet " & $RoundTrip)
    EndIf

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

    Next

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

    Return $PingVar ; $PingVar ist der Rückgabeparameter
    EndFunc ;==>_TestOnInternetConnect
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _VPNConnect()

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

    ;Fortschritt anziegen:-)
    GUICtrlSetData($fortschritt, 10)
    ;If BitAND(GUICtrlRead($radio_dsl), $GUI_CHECKED) = $GUI_CHECKED Then
    _StartVPNConnect()
    GUICtrlSetData($fortschritt, 20)
    ;_GetUserAD()
    GUICtrlSetData($fortschritt, 30)
    ;~ _Update()
    Sleep(500)
    GUICtrlSetData($fortschritt, 40)
    _MapDrive()
    GUICtrlSetData($fortschritt, 50)
    GUICtrlSetData($fortschritt, 60)

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

    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Abschliessende Einstellungen.")
    GUICtrlSetData($fortschritt, 90)
    ;EndIf

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

    ;Wenn UMTS RadioButton aktiv ist
    ;If BitAND(GUICtrlRead($radio_umts), $GUI_CHECKED) = $GUI_CHECKED Then
    ; _StartUMTSInternetConnect()
    ; GUICtrlSetData($fortschritt, 20)
    ; Sleep(2000)
    ; _GetUserAD()
    ; GUICtrlSetData($fortschritt, 30)
    ;~ _Update()
    ; Sleep(500)
    ; GUICtrlSetData($fortschritt, 40)
    ; _MapDrive()
    ; GUICtrlSetData($fortschritt, 50)
    ; Sleep(500)
    ; GUICtrlSetData($fortschritt, 60)
    ; GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Abschliessende Einstellungen.")
    ; GUICtrlSetData($fortschritt, 90)
    ;EndIf

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

    ;gpupdate und BG info
    _WriteIPLOG()
    Run("gpupdate", "", @SW_HIDE)
    GUICtrlSetData($fortschritt, 100)
    Sleep(500)
    _WriteLogData("gpudate gestartet")
    ;tadaaaaaa
    SoundPlay(@ScriptDir & "\logon.wav", 1)
    ;Exit

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

    GUISetState(@SW_HIDE, $Mainform)
    _WriteLogData("Verbinidungsaufbau abgeschlossen.")

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

    ;$childform zur aktiven GUI machen

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

    GUISetState(@SW_SHOW, $Childform)
    GUICtrlSetData($lbl_ip, "IP Adresse: " & @IPAddress1)

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

    HotKeySet("{ESC}", "_nichts")
    GUISwitch($Childform)

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

    EndFunc ;==>_VPNConnect
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _StartVPNConnect()
    ;~ VPN verbindung aufbauen
    GUICtrlSetState($btn_verbinden, $GUI_DISABLE)
    GUICtrlSetState($lbl_passwort, $GUI_DISABLE)
    GUICtrlSetState($chk_showpw, $GUI_DISABLE)

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

    ;Variablendeklaration
    Local $PingVar, $RoundTrip, $InitTime, $PID
    $passwort = GUICtrlRead($lbl_passwort)
    $ConnectionName = ("firma-VPN-Verbindung")
    $Testserver = "dc.firma.intern"
    $Einwahluser = GUICtrlRead($Input_user)

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

    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Ein Moment bitte," & @CRLF & @CRLF & "VPN Verbindung mit firma wird hergestellt.");& @CRLF & "und mit Server erbunden")

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

    $Connect = RunWait("rasdial " & $ConnectionName & " " & $Einwahluser & " " & $passwort & " /domain:coo.local", "", @SW_DISABLE)

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

    _WriteLogData("Rasdial ausgeführt.")

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

    ;Runwait liefert im Fehlerfall 0 zurück.Der exitcode für cmd ist aber 0 also <>0:-)

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

    If $Connect <> 0 Then
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Bei der Verbindung trat ein Fehler auf." & @CRLF & @CRLF & "Bitte versuchen Sie es erneut.")
    Sleep(3000)
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "firma Connect wird beendet")
    Sleep(2000)
    _WriteLogData("verbindung fehlgeschlagen. firmaConnect wir beendet")
    ProcessClose($Connect)
    Exit
    EndIf

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

    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Bitte warten," & @CRLF & @CRLF & "VPN Verbindung mit firma wird hergestellt.")
    Sleep(1000)

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

    $PingVar = Ping($Testserver, 1000)
    $InitTime = TimerInit()
    While $PingVar = 0
    Sleep(100)
    ;Abbruch wenn nach 15 sekunden keine Antwort vom DC
    If TimerDiff($InitTime) > 15000 Then

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

    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Verbindungsfehler (Passwort falsch?)" & @CRLF & @CRLF & "Bitte versuchen Sie es erneut.")
    Sleep(10000)
    ProcessClose($Connect)
    Exit
    EndIf

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

    $PingVar = Ping($Testserver, 1000) ;sonst ändert sich $pingvar nicht:-)
    WEnd

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

    ;Was fürs Auge
    GUICtrlSetData($fortschritt, 20)
    Sleep(250)
    GUICtrlSetData($fortschritt, 30)

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

    Return $PingVar

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

    EndFunc ;==>_StartVPNConnect
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;Netzlaufwerke verbinden
    Func _MapDrive()
    ;$LogonServer = "\\dc.firma.intern"
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Ein Moment bitte," & @CRLF & @CRLF & "Ihre Netzwerklaufwerke werden verbunden.")
    FileCopy(@LogonServer & "\netlogon\login-berlin.bat", @ScriptDir & "\login.bat")
    RunWait(@ScriptDir & "\login.bat", "", @SW_HIDE)

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

    For $RoundTrip = 1 to 3

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

    $Drive = DriveGetDrive( "network" )
    If NOT @error Then
    GUICtrlSetData($lbl_info,@CRLF & @CRLF & "Netzlaufwerke erfolgreich verbunden.")
    Else
    GUICtrlSetData($lbl_info,@CRLF & @CRLF & "Netzlaufwerke noch nicht verbunden." &@CRLF & @CRLF & "Bitte warten...")
    RunWait(@ScriptDir & "\login.bat","",@SW_HIDE)
    EndIf
    Next

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

    _WriteLogData("Netzlaufwerke verbunden.")
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Netzwerklaufwerke erfolgreich verbunden.")
    Sleep(500)
    Return

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

    EndFunc ;==>_MapDrive
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _VPNStatus()
    ;~ schreibt Texte und macht das Textfeld in der Childform bunt, damit die Leute immmer sehen wie schnell sie verbunden sind
    $Connection = Ping($Testserver, 1000)

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

    While $Connection = 0
    GUICtrlSetBkColor($lbl_info2, 0xFFFFFF)
    GUICtrlSetData($lbl_info2, @CRLF & "Verbindungsgeschwindigkeit wird ermittelt.")
    Sleep(1000)
    $Connection = Ping($Testserver, 1000)
    WEnd

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

    GUICtrlSetData($lbl_info2, "VPN Verbindung zu firma hergestellt." & @CRLF & "Die Antwortzeit beträgt:" & @CRLF & $Connection & " ms.")

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

    While 1

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

    $Connection = Ping($Testserver, 1000)
    Sleep(5000)
    If $Connection > 350 Then
    GUICtrlSetData($lbl_info2, "Achtung!" & @CRLF & "Sehr langsame Verbindung!" & @CRLF & "Arbeit nur unter Schwierigkeiten möglich!")
    GUICtrlSetBkColor($lbl_info2, 0xFF0000)
    _WriteLogData("UMTS Geschwindingkeitswarnung. Antwortzeit: " & $Connection)

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

    ElseIf $Connection > 200 Then
    GUICtrlSetBkColor($lbl_info2, 0xFFFF00)
    GUICtrlSetData($lbl_info2, "VPN Verbindung zu firma hergestellt." & @CRLF & "Die Verbindungsgeschwindigkeit ist:" & @CRLF & "gut")

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

    ElseIf $Connection < 200 Then
    GUICtrlSetBkColor($lbl_info2, 0x66FF00)
    GUICtrlSetData($lbl_info2, "VPN Verbindung zu firma hergestellt." & @CRLF & "Die Verbindungsgeschwindigkeit ist:" & @CRLF & "Sehr gut")

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

    ;Warnmeldung wenn Verbindungsgeschwindigkeit zu langsam

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

    EndIf

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

    WEnd

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

    EndFunc ;==>_VPNStatus
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;VPN Verbindung trennen und Netzlaufwerke trennen
    Func _VPNDisconnect()
    GUICtrlSetBkColor($lbl_info2, 0xFFFFFF)
    GUICtrlSetData($lbl_info2, "VPN Verbindung zu firma wird getrennt." & @CRLF & @CRLF & "Netzlaufwerke werden getrennt.")

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

    Run("rasdial /DISCONNECT", "", @SW_HIDE)
    _WriteLogData("Verbindung getrennt.")
    Sleep(1000)
    Run("net use /delete * /YES", "", @SW_HIDE)
    _WriteLogData("Netzlaufwerke getrennt.")
    Sleep(1000)

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

    Sleep(1500)
    ;Files wieder löschen.
    ;_DeleteFiles()
    WinSetState("GlobeTrotter Connect", "", @SW_SHOW)
    ControlClick("GlobeTrotter Connect", "", 1017)
    Sleep(1000)

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

    WinClose("GlobeTrotter Connect")
    Sleep(500)
    ProcessClose("GlobeTrotter Connect.exe")
    Sleep(500)
    GUICtrlSetData($lbl_info2, "Trennung erfolgt." & @CRLF & @CRLF & "Programm wird beendet.")
    Exit
    EndFunc ;==>_VPNDisconnect
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Exitus
    Func _Terminate()
    Exit 0
    _WriteLogData("firmaConnect beendet")
    EndFunc ;==>_Terminate
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    Func _nichts()
    ; die sit eine Nichtfunktion:-)
    ;wird gebraucht um das HotKeySet ESC = _Termiate wieder zurückzusetzen.
    ;Damit die das $childform nicht "versehentlich mit ESC schliessen...
    EndFunc ;==>_nichts
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _showpw()
    ;~ zeigt das Passwort in Klartext an
    If GUICtrlRead($chk_showpw) = $GUI_CHECKED Then
    _GUICtrlEdit_SetPasswordChar($lbl_passwort)
    GUICtrlSetState($lbl_passwort, $GUI_FOCUS)
    Else
    _GUICtrlEdit_SetPasswordChar($lbl_passwort, "*") ; hier das "*" verändern
    GUICtrlSetState($lbl_passwort, $GUI_FOCUS)
    EndIf
    _WriteLogData("Passwort angezeigt.")

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

    EndFunc ;==>_showpw
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _DeleteFiles()

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

    ;~ weg mit dem alten Zeuch
    FileDelete(@ScriptDir & "\*.jpg")
    _WriteLogData("JPGs wurden gelöscht")
    FileDelete(@ScriptDir & "\*.wav")
    _WriteLogData("WAV wurde gelöscht")

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

    EndFunc ;==>_DeleteFiles
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;----------------------------------------------------------------------------------------------------------------------------------

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

    Func _WriteIPLOG()

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

    ;~ Erstellt die IPinfo.txt. Wird für BGINfo benötigt
    Local $LogData = "IPinfo.txt"

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

    if not FileExists($LogData) Then
    $FileCreateOK = _FileCreate($LogData)
    Else
    FileDelete($LogData)
    EndIf

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

    $LogFileID = FileOpen($LogData,1)

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

    FileWrite($LogFileID,@IPAddress1)

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

    FileClose($LogFileID)

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

    EndFunc
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _esc($s)
    Return StringReplace($s, '"', '""', 0, 1)
    EndFunc ;==>_esc
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

    [/autoit]


    Das alles baut eine VPN Verbindung auf, mappt Laufwerke und zeigt dann in einem kleinen Fenster ($Childform)die Verbindungs"qualität" an.
    Diese "Qualität" ermittle ich mit der Funtion _VPNStatus in Zeile 129. Jetzt hab icvh gemerkt dass die da eigentlcih falsch ist. So wird alles ein bißchen ruckelig.
    ich hab auch versucht die woanders aufzurufen aber bekomme es nicht hin dass dann die Childform aktiv ist. Es geht zwar aber dann funktioniert der trennen Button nicht mehr.

    _VPNStatus muss ja "immer" laufen wenn der Verbindungsaufbau abgeschlossen ist.
    Aber wo rufe ich die am schlausten auf?

    2 Mal editiert, zuletzt von Camulus (26. Januar 2012 um 14:04)

  • Zitat

    Heute, 13:39 Eröffnunsbeitrag
    Heute, 13:57 sinnfreier Beitrag zum pushen,


    So etwas führt in aller Regel dazu, dass das Thema ignoriert wird, so auch jetzt von mir,

    autoBert

  • Also wie autoBert schon gesagt hat, man Pusht seinen Thread nicht schon nach so kurzer Zeit.. man sollte mindestens einmal dein Usern 2 Tage Zeit geben um auf deinen Thread zu reagieren.. sollte dann niemand dir schreiben kann man den Thread noch einmal Pushen .. (meiner Meinung nach)

    nun zu deinem Problem, also als erstes würde ich dein Script mal etwas aufräumen es ist sehr unübersichtlich finde ich, man muss nicht jedem Kleinkram in eine Funktion Packen .. mit riesen Abständen.. 2 wenn du unbedingt deine Pingzeiten Testen willst dann mach das ganze doch einfach nachdem alles druchgelaufen ist also die Laufwerke hinzugefügt wurden usw.. und dann rufst du als letztes einfach deinen Pingtest auf der dir dann die werte setzt.

    Gruß Marvin

  • Also um das "pushen" zu erklären.
    Ich dachte ich hätte die Lösung gefunden und hab das in den Thread reingeschrieben und ihn als gelöst markiert. Funtioniert hatte es aber nicht, deswegen hab ich den Betrag wieder "geleert" und den Thread wieder auf offen gesetzt.
    Wenn jetzt manche Leute meinen sie müssten deswegen den Thread ignorieren dann sollen sie das tun. Mir schien das die beste Möglichkeit zu sein. Ich finde solche "Du hast gepusht jetzt red ich nicht mehr mit dir" Beiträge genauso "sinnfrei". Es könnte ja durchaus möglich sein dass der Verfasser garnicht die Absicht hatte zu pushen!
    Nichts desto trotz lass ich mich auch gerne belehren. Wie hätte ich es denn sonst in so einem fall machen sollen?

    @Protex:
    Rufe ich den Pingtest so wie es ist nicht als letztes auf?
    Es ist ja zumindest das letzte was ohne Usereingabe passiert. Momentan ist es so dass die Eingabefelder erscheinen und der Cursor anfängt zu blinken und dann rennt im 5 Sekunden Abstand der Test los.
    Wenn die User jetzt ihre Credentials eingeben ruckelt alles halt ein bißchen und das würde ich gerne verhindern. Wenn ich den Test jetzt ans Ende setze (nach dem Verbindungsaufbau) ist mein $childform nicht mehr aktiv und der Button (trennen) funktioniert nicht mehr.

    Aufräumen? Wie würdest du es denn "aufbauen". Ich dachte es wäre so übesichtlich oder zumindest nachvollziehbar.

  • Also um das "pushen" zu erklären.
    Ich dachte ich hätte die Lösung gefunden und hab das in den Thread reingeschrieben und ihn als gelöst markiert. Funtioniert hatte es aber nicht, deswegen hab ich den Betrag wieder "geleert" und den Thread wieder auf offen gesetzt.


    In einem solchen Fall löscht man einfach wieder den Beitrag, das man den Präfix umstellen kann hast du ja auch gefunden.

    mfg autoBert

  • Also zum ersten Abschnitt bei jedem Beitrag von dir gibt es Rechts unten einen Edit Button einfach dann eine deinen Beitrag editieren mit einer Zusatz zeile 'EDIT: Problem doch noch nicht behoben' oder wasimmer du schrieben möchtest ;)
    es ist meistens der Fall dass die User einfach sowas von ungeduldig sind und dass geht auf Dauer auf den Keks..

    Hab mal bissi was rumgebastelt ..

    Spoiler anzeigen
    [autoit]


    #NoTrayIcon
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    ;#include <WriteLogData.au3> ; was auch immer dass sein soll für eine UDF die ist doch nutzlos mach bau
    ;dir die Funktion doch in dein Script und include keine Sinnlosen Scripts mit rein^^

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

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=world.ico
    #AutoIt3Wrapper_Outfile=exe\FirmaConnect.exe
    #AutoIt3Wrapper_Res_Comment=Firma Connect stellt eine VPN Verbindung zu Firmaher.
    #AutoIt3Wrapper_Res_Description=FirmaConnect
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Copyright © 2010 IT
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 1.0.0.0
    Author: Boris Wagener

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    HotKeySet("{ESC}", "_Terminate")

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

    $ProgramNameVersion = "FirmaConnect -Köln- " & FileGetVersion(@AutoItExe)
    $Testdomain = "www.google.de"
    $Testserver = "dc.firma.intern"
    $User = @UserName
    $LogonServer = @LogonServer
    $FileName = @ScriptDir & "\Logon_" & @YEAR & @MON & @MDAY & "_" & @HOUR & @MIN & @SEC & ".log"

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

    Global $Mainform, $Childform, $fortschritt, $Pic1, $lbl_fortschritt, $lbl_info, $Label2,$Label3
    Global $Einwahluser, $Input_user, $lbl_info2, $User, $lbl_passwort, $btn_verbinden, $btn_trennen
    Global $Label1, $Group1, $chk_showpw, $lbl_ip

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

    FileInstall("PKV.jpg", "C:\Firma\FirmaConnect\PKV.jpg", 1)
    FileInstall("world.ico", "C:\Firma\FirmaConnect\world.ico", 1)
    FileInstall("Logon.wav", "C:\Firma\FirmaConnect\Logon.wav", 1)

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

    ;If FileDelete(@ScriptDir & "\*.log") = 1 Then _WriteLogData("Alte LOG Datei wurde erfolgreich gelöscht.")
    ;du schreibst einen Eintrag es würde etwas gelöscht aber wird nicht? sinnlos?

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

    $hMainform = GUICreate("firmaConnect 1.0", 397, 387, 273, 123)
    GUISetIcon(@ScriptDir & "\icon3.ico", -1)
    GUISetBkColor(0xFFFFFF)
    $Pic1 = GUICtrlCreatePic("firma.jpg", 72, 0, 254, 87, BitOR($GUI_SS_DEFAULT_PIC,$WS_CLIPSIBLINGS))
    $fortschritt = GUICtrlCreateProgress(32, 192, 335, 17, 0)
    $lbl_info = GUICtrlCreateLabel("", 32, 84, 335, 108, BitOR($SS_CENTER,$SS_SUNKEN))
    GUICtrlSetFont(-1, 10, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xD7E4F2)
    $lbl_passwort = GUICtrlCreateInput("", 158, 256, 161, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD))
    $Label1 = GUICtrlCreateLabel("Passwort:", 58, 256, 62, 20, 0)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $btn_verbinden = GUICtrlCreateButton("Verbinden", 120, 328, 155, 33, BitOR($BS_DEFPUSHBUTTON,$BS_PUSHLIKE,$BS_NOTIFY))
    GUICtrlSetState(-1,$GUI_DISABLE) ; Reicht doch aus nur diesem Button du Deaktivieren
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $chk_showpw = GUICtrlCreateCheckbox("Passwort anzeigen", 158, 288, 161, 17)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Input_user = GUICtrlCreateInput("", 158, 226, 161, 21);, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD))
    $Label2 = GUICtrlCreateLabel("Benutzername:", 58, 226, 93, 20, 0)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("Abbrechen mit [ESC]", 136, 368, 121, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)

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

    $hChildform = GUICreate("VPN- Status", 264, 116, 10, 10, BitOR($WS_CAPTION, $WS_POPUP, $WS_BORDER, $WS_CLIPSIBLINGS), BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE))
    GUISetIcon("C:\firma\firmaConnect\world.ico")
    GUISetBkColor(0xFFFFFF)
    $lbl_info2 = GUICtrlCreateLabel("", 8, 4, 247, 52, BitOR($SS_CENTER, $SS_SUNKEN))
    GUICtrlSetFont(-1, 9, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $btn_trennen = GUICtrlCreateButton("Trennen", 72, 80, 123, 25, $WS_GROUP)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $lbl_ip = GUICtrlCreateLabel("", 8, 56, 245, 20, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUISetState(@SW_HIDE)

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

    _WriteLogData("Programm : " & @ScriptName & ". Version=" & FileGetVersion(@ScriptName) & " mit Datum=" & FileGetTime(@ScriptName, 1, 1))
    _WriteLogData("firma Benutzer : " & @UserName)
    _WriteLogData("LogonServer : " & @LogonServer)
    _WriteLogData("LogonDomain : " & @LogonDomain)
    _WriteLogData("LogonDNSDomain : " & @LogonDNSDomain)
    _WriteLogData("Desktopverzeichnis: " & @DesktopCommonDir)
    _WriteLogData("---------------------------------------------------------------------")

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

    $INetState = _CheckInternetConnection()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btn_verbinden
    _VPNVerbinden()
    AdlibRegister("_VPNStatus",5000) ; alle 5 Sekunden
    EndSwitch
    WEnd

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

    Func _WriteLogData($String)
    ConsoleWrite($String&@CRLF)
    EndFunc

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

    Func _CheckInternetConnection()
    Local $PingVar, $RoundTrip
    GUICtrlSetData($lbl_info,@CRLF&@CRLF&"Ein Moment bitte,"&@CRLF&@CRLF&"Internetverbindung wird getestet.")

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

    For $i = 1 To 3 ; 3 Mal
    $PingVar = Ping($Testdomain, 1000) ;Ping auf google mit einem Delay von 1000ms = 1 Sekunde
    If $PingVar >= 0 Then
    GUICtrlSetData($lbl_info,@CRLF&@CRLF&"Internetverbindung erfolgreich,"&@CRLF&@CRLF&"Bitte geben sie ihren Benutzer und ihr Kennwort ein.")
    GUICtrlSetState($btn_verbinden, $GUI_ENABLE)
    GUICtrlSetState($Input_user, $GUI_FOCUS)
    Return True
    EndIf
    Sleep(200)
    Next
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Internetverbindung nicht möglicht" & @CRLF)
    _CheckInternetConnection() ; Funktion Rekursiv aufrufen lassen
    EndFunc

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

    Func _VPNVerbinden()
    $PingOnServer1 = Ping($Testserver, 1000)
    If $PingOnServer1 > 0 Then
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Es besteht bereits eine VPN Verbindung.")
    MsgBox(64,"VPN Verbindung","Es besteht bereits eine VPN Verbindung, dass Programm wird nun beendet")
    Exit
    Else
    _VPNConnect()
    EndIf
    EndFunc

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

    Func _VPNConnect()

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

    GUICtrlSetData($fortschritt, 10)
    _StartVPNConnect()
    GUICtrlSetData($fortschritt, 20)
    GUICtrlSetData($fortschritt, 30)
    Sleep(500)
    GUICtrlSetData($fortschritt, 40)
    _MapDrive()
    GUICtrlSetData($fortschritt, 50)
    GUICtrlSetData($fortschritt, 60)

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

    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Abschliessende Einstellungen.")
    GUICtrlSetData($fortschritt, 90)

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

    _WriteIPLOG()
    Run("gpupdate", "", @SW_HIDE)
    GUICtrlSetData($fortschritt, 100)
    Sleep(500)
    _WriteLogData("gpudate gestartet")
    ;tadaaaaaa
    SoundPlay(@ScriptDir & "\logon.wav", 1)

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

    GUISetState(@SW_HIDE, $hMainform)
    _WriteLogData("Verbinidungsaufbau abgeschlossen.")
    GUISetState(@SW_SHOW, $Childform)
    GUICtrlSetData($lbl_ip, "IP Adresse: " & @IPAddress1)
    HotKeySet("{ESC}") ;Leer reicht aus
    GUISwitch($Childform)

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

    EndFunc ;==>_VPNConnect

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

    Func _StartVPNConnect()
    ;~ VPN verbindung aufbauen
    GUICtrlSetState($btn_verbinden, $GUI_DISABLE)
    GUICtrlSetState($lbl_passwort, $GUI_DISABLE)
    GUICtrlSetState($chk_showpw, $GUI_DISABLE)

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

    ;Variablendeklaration
    Local $PingVar, $RoundTrip, $InitTime, $PID
    $passwort = GUICtrlRead($lbl_passwort)
    $ConnectionName = "firma-VPN-Verbindung"
    $Testserver = "dc.firma.intern"
    $Einwahluser = GUICtrlRead($Input_user)

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

    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Ein Moment bitte," & @CRLF & @CRLF & "VPN Verbindung mit firma wird hergestellt.");& @CRLF & "und mit Server erbunden")
    $Connect = RunWait("rasdial " & $ConnectionName & " " & $Einwahluser & " " & $passwort & " /domain:coo.local", "", @SW_DISABLE)
    _WriteLogData("Rasdial ausgeführt.")

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

    If $Connect <> 0 Then
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Bei der Verbindung trat ein Fehler auf." & @CRLF & @CRLF & "Bitte versuchen Sie es erneut.")
    Sleep(3000)
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "firma Connect wird beendet")
    Sleep(2000)
    _WriteLogData("verbindung fehlgeschlagen. firmaConnect wir beendet")
    ProcessClose($Connect)
    Exit
    EndIf

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

    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Bitte warten," & @CRLF & @CRLF & "VPN Verbindung mit firma wird hergestellt.")

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

    $PingVar = Ping($Testserver, 1000)
    $InitTime = TimerInit()
    While $PingVar = 0
    Sleep(100)
    ;Abbruch wenn nach 15 sekunden keine Antwort vom DC
    If TimerDiff($InitTime) > 15000 Then
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Verbindungsfehler (Passwort falsch?)" & @CRLF & @CRLF & "Bitte versuchen Sie es erneut.")
    Sleep(10000)
    ProcessClose($Connect)
    Exit
    EndIf
    $PingVar = Ping($Testserver, 1000) ;sonst ändert sich $pingvar nicht:-)
    WEnd

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

    ;Was fürs Auge
    GUICtrlSetData($fortschritt, 20)
    Sleep(250)
    GUICtrlSetData($fortschritt, 30)

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

    Return $PingVar
    ;Verbindung erfolgreich und Firmenserver ist nun erreichbar
    EndFunc ;==>_StartVPNConnect

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

    Func _MapDrive()
    ;$LogonServer = "\\dc.firma.intern"
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Ein Moment bitte," & @CRLF & @CRLF & "Ihre Netzwerklaufwerke werden verbunden.")
    FileCopy(@LogonServer & "\netlogon\login-berlin.bat", @ScriptDir & "\login.bat")
    RunWait(@ScriptDir & "\login.bat", "", @SW_HIDE)

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

    For $RoundTrip = 1 to 3
    $Drive = DriveGetDrive( "network" )
    If NOT @error Then
    GUICtrlSetData($lbl_info,@CRLF & @CRLF & "Netzlaufwerke erfolgreich verbunden.")
    ExitLoop
    Else
    GUICtrlSetData($lbl_info,@CRLF & @CRLF & "Netzlaufwerke noch nicht verbunden." &@CRLF & @CRLF & "Bitte warten...")
    RunWait(@ScriptDir & "\login.bat","",@SW_HIDE)
    EndIf
    Next

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

    _WriteLogData("Netzlaufwerke verbunden.")
    GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Netzwerklaufwerke erfolgreich verbunden.")
    Sleep(500)
    Return
    EndFunc ;==>_MapDrive
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _VPNStatus()
    ;~ schreibt Texte und macht das Textfeld in der Childform bunt, damit die Leute immmer sehen wie schnell sie verbunden sind
    $Connection = Ping($Testserver, 1000)
    GUICtrlSetBkColor($lbl_info2, 0xFFFFFF)

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

    If $Connection > 350 Then
    GUICtrlSetData($lbl_info2, "Achtung!" & @CRLF & "Sehr langsame Verbindung!" & @CRLF & "Arbeit nur unter Schwierigkeiten möglich!")
    GUICtrlSetBkColor($lbl_info2, 0xFF0000)
    _WriteLogData("UMTS Geschwindingkeitswarnung. Antwortzeit: " & $Connection)

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

    ElseIf $Connection > 200 Then
    GUICtrlSetBkColor($lbl_info2, 0xFFFF00)
    GUICtrlSetData($lbl_info2, "VPN Verbindung zu firma hergestellt." & @CRLF & "Die Verbindungsgeschwindigkeit ist:" & @CRLF & "gut")

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

    ElseIf $Connection < 200 Then
    GUICtrlSetBkColor($lbl_info2, 0x66FF00)
    GUICtrlSetData($lbl_info2, "VPN Verbindung zu firma hergestellt." & @CRLF & "Die Verbindungsgeschwindigkeit ist:" & @CRLF & "Sehr gut")

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

    ;Warnmeldung wenn Verbindungsgeschwindigkeit zu langsam

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

    EndIf

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

    EndFunc ;==>_VPNStatus

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

    Func _VPNDisconnect()
    GUICtrlSetBkColor($lbl_info2, 0xFFFFFF)
    GUICtrlSetData($lbl_info2, "VPN Verbindung zu firma wird getrennt." & @CRLF & @CRLF & "Netzlaufwerke werden getrennt.")

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

    Run("rasdial /DISCONNECT", "", @SW_HIDE)
    _WriteLogData("Verbindung getrennt.")
    Sleep(1000)
    Run("net use /delete * /YES", "", @SW_HIDE)
    _WriteLogData("Netzlaufwerke getrennt.")
    Sleep(1000)

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

    Sleep(1500)
    ;Files wieder löschen.
    ;_DeleteFiles()
    WinSetState("GlobeTrotter Connect", "", @SW_SHOW)
    ControlClick("GlobeTrotter Connect", "", 1017)
    Sleep(1000)

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

    WinClose("GlobeTrotter Connect")
    Sleep(500)
    ProcessClose("GlobeTrotter Connect.exe")
    Sleep(500)
    GUICtrlSetData($lbl_info2, "Trennung erfolgt." & @CRLF & @CRLF & "Programm wird beendet.")
    Exit
    EndFunc ;==>_VPNDisconnect
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Exitus
    Func _Terminate()
    Exit 0
    _WriteLogData("firmaConnect beendet")
    EndFunc ;==>_Terminate
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _showpw()
    ;~ zeigt das Passwort in Klartext an
    If GUICtrlRead($chk_showpw) = $GUI_CHECKED Then
    ; _GUICtrlEdit_SetPasswordChar($lbl_passwort)
    GUICtrlSetState($lbl_passwort, $GUI_FOCUS)
    Else
    ;_GUICtrlEdit_SetPasswordChar($lbl_passwort, "*") ; hier das "*" verändern
    GUICtrlSetState($lbl_passwort, $GUI_FOCUS)
    EndIf
    _WriteLogData("Passwort angezeigt.")

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

    EndFunc ;==>_showpw
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _DeleteFiles()

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

    ;~ weg mit dem alten Zeuch
    FileDelete(@ScriptDir & "\*.jpg")
    _WriteLogData("JPGs wurden gelöscht")
    FileDelete(@ScriptDir & "\*.wav")
    _WriteLogData("WAV wurde gelöscht")

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

    EndFunc ;==>_DeleteFiles
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

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

    ;----------------------------------------------------------------------------------------------------------------------------------

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

    Func _WriteIPLOG()

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

    ;~ Erstellt die IPinfo.txt. Wird für BGINfo benötigt
    Local $LogData = "IPinfo.txt"

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

    if not FileExists($LogData) Then
    $FileCreateOK = _FileCreate($LogData)
    Else
    FileDelete($LogData)
    EndIf

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

    $LogFileID = FileOpen($LogData,1)

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

    FileWrite($LogFileID,@IPAddress1)

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

    FileClose($LogFileID)

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

    EndFunc
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    Func _esc($s)
    Return StringReplace($s, '"', '""', 0, 1)
    EndFunc ;==>_esc
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------

    [/autoit]

    ist noch nicht gut aber naja etwas ordentlicher, und deine Statusfunk sollte nun laufen sowie deine Buttons ich habe aber deiner Child GUI noch nichts zugeweisen den ich habe den ONEventMod ersetzt durch den Massage Mod also musst du die Cases noch erweitern.. kann ich halt nicht machen weil ich keinen VPN zugang habe und naja lust hatte ich auch nicht mehr :D

    Gruß Marvin