Hallo Board ich habe ein kleines Prolem bei dem ich nicht so ganz weiter komme.
Es dreht sich alles um ein kleines Tool mit dem sich unsere Aussendienstler per VPN einwählen, Laufwerke bekommen und ein paar andere Kleinigkeiten.
Das funktioniert auch im großen und ganzen.
Ein Kollege kam an und wollte eine zweite GUI haben mit der agezeigt ob sie verbunden sind und mit welchen Antwortzeiten.
Nicht wundern...einige unserer Aussendienstler sind...etwas..."beratungsbedürftig":-)
Die GUI kommt auch und zeigt was sie soll.
Aber der Button "Trennen" macht nix.
Ein andere Kollege hat mir schon den Tipp gegeben alles auf "GUIOnEventMode" umzustellen. hab ich gemacht...geht trotzdem nicht
Hier mal mein Script.
Warum tuts der Button nicht?
Spoiler anzeigen
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Version=beta
#AutoIt3Wrapper_icon=icon3.ico
#AutoIt3Wrapper_outfile=firmaConnect.exe
#AutoIt3Wrapper_UseX64=n
#AutoIt3Wrapper_Res_Comment=firma Connect stellt eine VPN Verbindung zu firma her.
#AutoIt3Wrapper_Res_Description=firmaConnect
#AutoIt3Wrapper_Res_Fileversion=3.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Copyright © 2010 IT der firma Pflegeberatung
#AutoIt3Wrapper_Res_Language=1031
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.0.0.0
Author: Boris Wagener
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]FileInstall("firmaVPN.jpg","firmaVPN.jpg",1)
FileInstall("icon3.ico","icon3.ico",1)
FileInstall("Logon.wav","Logon.wav",1)
; 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>
;############################################################################################################################################################
;~ Formular
Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus
[/autoit] [autoit][/autoit] [autoit]#Region ### START Koda GUI section ### Form=C:\Users\b.wagener\Desktop\firmaConnect V3\Form1.kxf
$Mainform = GUICreate("firma Connect V3.0", 397, 469, 150, 123, BitOR($WS_CAPTION,$WS_POPUP,$WS_BORDER,$WS_CLIPSIBLINGS))
GUISetIcon("icon3.ico")
GUISetBkColor(0xFFFFFF)
$fortschritt = GUICtrlCreateProgress(32, 256, 335, 17)
$Pic1 = GUICtrlCreatePic("firmaVPN2.jpg", 8, 8, 380, 132, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$lbl_info = GUICtrlCreateLabel("", 32, 148, 335, 108, BitOR($SS_CENTER,$SS_SUNKEN))
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xD7E4F2)
$Group1 = GUICtrlCreateGroup("Verbindungsart:", 40, 280, 313, 65)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$radio_dsl = GUICtrlCreateRadio("DSL/ WLAN", 80, 312, 129, 17)
$radio_umts = GUICtrlCreateRadio("UMTS", 240, 312, 81, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$lbl_passwort = GUICtrlCreateInput("", 144, 368, 161, 21, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
$Label1 = GUICtrlCreateLabel("Passwort:", 80, 368, 62, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$btn_verbinden = GUICtrlCreateButton("Verbinden", 120, 408, 155, 33, $WS_GROUP)
GUICtrlSetOnEvent($btn_verbinden, "VPNConnect")
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
;Form2
$Childform = GUICreate("firma Connect V3.0", 349, 159, 10, 10, BitOR($WS_CAPTION,$WS_POPUP,$WS_BORDER,$WS_CLIPSIBLINGS), BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
GUISetIcon("I:\firmaConnect V3\icon3.ico")
GUISetBkColor(0xFFFFFF)
$lbl_info2 = GUICtrlCreateLabel("", 24, 12, 295, 84, BitOR($SS_CENTER,$SS_SUNKEN))
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xD7E4F2)
$btn_trennen = GUICtrlCreateButton("Trennen", 96, 104, 155, 33, $WS_GROUP)
GUICtrlSetOnEvent($btn_trennen, "VPNDisconnect")
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];-------------------------------------------------------------------------------------------------------------------------------------------------------------
;Variablendeklaration
$ProgramNameVersion = "firmaConnect -Köln- " & FileGetVersion(@AutoItExe)
$Testdomain = "www.google.de"
$Testserver = "dc.firma.local"
$User = @UserName
$LogonServer = @LogonServer
Global $Mainform, $fortschritt, $Pic1, $lbl_fortschritt, $lbl_info, $User,$lbl_passwort, $btn_verbinden
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]HotKeySet("{ESC}", "Terminate")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];-------------------------------------------------------------------------------------------------------------------------------------------------------------
;~ If FileExists(@ScriptDir & "\Download\") Then
;~ DirRemove(@ScriptDir & "\Download\", 1)
;~ EndIf
;~ If FileExists(@ScriptDir & "\firmaConnectUpdate.exe") Then
;~ FileDelete(@ScriptDir & "\firmaConnectUpdate.exe")
;~ EndIf
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;Los gehts
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
Ausblenden()
;VPN_Test()
Form_Open()
;VPNStatus()
While 1
Sleep(500)
WEnd
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;############################################################################################################################################################
; Funktionen
;############################################################################################################################################################
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
; Abprüfen einer VPN-Verbindung
Func VPN_Test()
$PingOnServer1 = Ping($Testserver,200)
; 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.")
Sleep(3000)
GUICtrlSetData($lbl_info, @CRLF &@CRLF & "firma Connect wird beendet.")
Sleep(1000)
Terminate()
EndIf
Return
EndFunc
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
Func Form_Open()
$InternetOK = TestOnInternetConnect();
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]If $InternetOK = True Then
[/autoit] [autoit][/autoit] [autoit]Einblenden()
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetState($radio_dsl, $GUI_CHECKED)
[/autoit] [autoit][/autoit] [autoit]ElseIf $InternetOK = False Then
Einblenden()
GUICtrlSetState($radio_umts, $GUI_CHECKED)
GUICtrlSetData($lbl_info, @CRLF & @CRLF & "Es besteht keine DSL Verbindung."& @CRLF & @CRLF &"Verbindungsart UMTS wird gesetzt")
Sleep(2000)
EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]GUICtrlSetData($lbl_info, @CRLF &@CRLF & "Bereit zum Verbinden."& @CRLF & @CRLF & "Bitte geben Sie ihr Passwort ein,"&@CRLF & "und klicken Sie auf Verbinden.")
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetData($fortschritt, 10)
EndFunc
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];-------------------------------------------------------------------------------------------------------------------------------------------------------------
; Unterfunktion : Internetverbindung testen
Func TestOnInternetConnect()
Local $PingVar,$RoundTrip ; $PingVar ist auch der Rückgabeparameter
GUICtrlSetData($lbl_info, @CRLF & @CRLF &"Ein Moment bitte," & @CRLF & @CRLF& "Internetverbindung wird getestet.")
sleep(1000)
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
if $PingVar <= 0 Then ; Wenn ping nicht erfolgreich war
[/autoit] [autoit][/autoit] [autoit]$PingVar = Ping($Testserver ,100) ; Ping gibt die Antwortzeit in ms zurück
EndIf
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)
; Warum wird hier die For-Schleife nicht abgebrochen ?
Else
GUICtrlSetData($lbl_info, @CRLF & @CRLF &"Internetverbindung ist nicht erfolgt"& @CRLF & @CRLF& "Verbindung wird erneut getestet " & $RoundTrip)
EndIf
Next
GUICtrlSetData($fortschritt, 10)
Return $PingVar ; $PingVar ist der Rückgabeparameter
EndFunc
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
Func VPNConnect()
If BitAND(GUICtrlRead($radio_dsl), $GUI_CHECKED) = $GUI_CHECKED Then
[/autoit] [autoit][/autoit] [autoit]StartVPNConnect()
[/autoit] [autoit][/autoit] [autoit];MapDrive()
GUICtrlSetData($fortschritt, 75)
ECM_Addins()
GUICtrlSetData($fortschritt, 95)
EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]If BitAND(GUICtrlRead($radio_umts), $GUI_CHECKED) = $GUI_CHECKED Then
StartUMTSInternetConnect()
GUICtrlSetData($fortschritt, 50)
MapDrive()
GUICtrlSetData($fortschritt, 75)
Sleep(500)
ECM_Addins()
GUICtrlSetData($fortschritt, 95)
EndIf
RunWait("gpupdate","",@SW_MINIMIZE)
GUICtrlSetData($fortschritt, 100)
Sleep(500)
GUICtrlSetData($lbl_info, @CRLF & @CRLF &"Verbindungsaufbau abgeschlossen.")
Sleep(2000)
SoundPlay(@ScriptDir & "\logon.wav",1)
;Exit
GUISetState(@SW_HIDE, $Mainform)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]VPNStatus()
Return
EndFunc
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
Func VPNStatus()
GUISetState(@SW_SHOW, $Childform)
GUICtrlSetData($lbl_info2, @CRLF & "Verbindungsgeschwindigkeit wird ermittelt") ; Da ist glatt gelogen abder irgendwas muss ja da stehen.
[/autoit] [autoit][/autoit] [autoit]RunWait("C:\firma\Sysinternals\Bginfo.exe C:\firma\Sysinternals\BGInfo_PC.bgi /accepteula /timer:0")
GUICtrlSetData($lbl_info, @CRLF & @CRLF &"BG Info wird gestartet.")
;#NoTrayIcon
[/autoit] [autoit][/autoit] [autoit]$Connection = Ping($Testserver,1000)
[/autoit] [autoit][/autoit] [autoit];Schleife einbauen Timerinit? http://www.autoit.de/index.php?page=Thread&threadID=8900
;If TimerDiff($begin) > 5000 Then
GUICtrlSetData($lbl_info2, @CRLF & "VPN Verbindung zu firma aktiv." & @CRLF & "Die Antwortzeit beträgt:" & @CRLF & $Connection & " ms.")
[/autoit] [autoit][/autoit] [autoit];Hier muss ne Schleife rein
While 1
$Connection = Ping($Testserver,1000)
Sleep (2000)
;Warnmeldung
If $Connection > 350 then
GUICtrlSetData($lbl_info2, @CRLF & "Achtung!" & @CRLF & @CRLF &"Sehr langsame Verbindung!" & @CRLF & "Arbeit nur unter Schwierigkeiten möglich!")
;GUICtrlSetBkColor($lbl_info2, 0xFF0000)
Else
GUICtrlSetData($lbl_info2, @CRLF & "VPN Verbindung zu firma aktiv." & @CRLF & "Die Antwortzeit beträgt:" & @CRLF & $Connection & " ms.")
EndIf
[/autoit] [autoit][/autoit] [autoit]WEnd
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndFunc
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
Func VPNDisconnect()
Run("rasdial /DISCONNECT","",@SW_HIDE)
Sleep(1000)
Run("net use /delete * /YES")
Sleep (1000)
Exit
EndFunc
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
Func StartVPNConnect()
Local $PingVar, $RoundTrip, $InitTime, $PID
$passwort = GUICtrlRead($lbl_passwort)
$ConnectionName =('"firma VPN"')
$Testserver = "dc.firma.local"
$rasdial =("rasdial " &$ConnectionName& " " & $User & " " & $passwort & " " &" /DOMAIN:firma")
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]; MsgBox(0,"", $rasdial)
$Connect= RunWait(@ComSpec & " /c " & '"' & $rasdial & '"',"",@SW_HIDE)
;MsgBox(0,"",$Connect)
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)
ProcessClose ($Connect)
Exit
EndIf
GUICtrlSetData($lbl_info, @CRLF & @CRLF &"Bitte warten," & @CRLF & @CRLF & "VPN Verbindung mit firma wird hergestellt.")
Sleep(1000)
$PingVar = Ping($Testserver,1000)
While $PingVar = 0
Sleep(100)
$PingVar = Ping($Testserver,1000) ;sonst ändert sich $pingvar nicht:-)
WEnd
GUICtrlSetData($fortschritt, 20)
Sleep(500)
GUICtrlSetData($fortschritt, 30)
Sleep(500)
GUICtrlSetData($fortschritt, 40)
Return $PingVar
[/autoit] [autoit][/autoit] [autoit]EndFunc
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
; Unterfunktion : Starten der UMTS-Internet-Verbindung
Func StartUMTSInternetConnect()
Local $PingVar, $RoundTrip, $InitTime, $PID, $passwort, $ConnectionName, $Testserver, $user, $Testdomain
$passwort = GUICtrlRead($lbl_passwort)
$ConnectionName =('"firma VPN"')
$Testserver = "dc.firma.local"
$User = @UserName
$Testdomain = "www.google.de"
$rasdial =("rasdial " &$ConnectionName& " " & $User & " " & $passwort & " " &" /DOMAIN:firma")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Run("C:\Program Files\Option\GlobeTrotter Connect\GlobeTrotter Connect.exe")
GUICtrlSetData($lbl_info, @CRLF &@CRLF & "Bitte stellen Sie die Verbindung" & @CRLF & @CRLF& "über GlobeTrotter Connect her.")
Sleep(1000)
WinWait("GlobeTrotter Connect", "Disconnect")
$PingVar = Ping($Testdomain,1000); solange keine Internetverbindung besteht gehts nicht weiter
[/autoit] [autoit][/autoit] [autoit]While $PingVar = 0;Warten bis Verbindung steht
;MsgBox(0,"Ping" , $PingVar,1)
GUICtrlSetData($lbl_info, @CRLF &@CRLF & "Ein Moment bitte" & @CRLF & @CRLF& "Internetverbindung wird über UMTS hergestellt.")
Sleep(100)
$PingVar = Ping($Testdomain,1000)
WEnd
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];Dann rasdial
RunWait(@ComSpec & " /c " & '"' & $rasdial & '"',"",@SW_HIDE)
If $PingVar > 0 Then
WinSetState("GlobeTrotter Connect","",@SW_MINIMIZE)
;ExitLoop
EndIf
;WEnd
;$UMTSPing = Ping($Testdomain,1000)
GUICtrlSetData($lbl_info, @CRLF &@CRLF & "Verbindungsgeschwindigkeit" & @CRLF & @CRLF& $PingVar & " ms")
sleep(1000)
Return $PID; $PingVar
EndFunc
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
[/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];-------------------------------------------------------------------------------------------------------------------------------------------------------------
Func MapDrive()
GUICtrlSetData($lbl_info,@CRLF & @CRLF & "Ein Moment bitte,"& @CRLF & @CRLF & "Ihre Netzwerklaufwerke werden verbunden.")
[/autoit] [autoit][/autoit] [autoit]RunWait(@LogonServer & "\netlogon\logon.bat","",@SW_HIDE)
sleep(1000)
GUICtrlSetData($lbl_info,@CRLF & @CRLF &"Netzwerklaufwerke erfolgreich verbunden.")
Sleep(500)
Return
EndFunc
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
; Outlook Addins aktivieren
Func ECM_Addins()
IfProcessExists("outlook.exe") Then
GUICtrlSetData($lbl_info,"Outlook ist noch geöffnet, bitte beenden.")
MsgBox(48,"Outlook bitte beenden....","Bitte beenden Sie Outlook, bevor die Anmeldung komplett ausgeführt wird." & @CRLF & @CRLF & "Oder klicken Sie auf OK und outlook wird automatisch beendet")
IfProcessExists("outlook.exe") Then
SplashTextOn("Ein Moment bitte...",@CRLF & "Outlook wird gestoppt.......","-1","100","-1","-1",0,"","","")
Sleep(500)
ProcessClose("outlook.exe")
Sleep(500)
SplashOff()
Else
[/autoit] [autoit][/autoit] [autoit]EndIf
EndIf
GUICtrlSetData($lbl_info,@CRLF &@CRLF & "Outlook AddIns werden aktiviert.")
Sleep(500)
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\AddIns\firma.ECM.OutlookAddIn","LoadBehavior","REG_DWORD","00000003")
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Office\InfoPath\AddIns\firma.ECM.InfoPathAddIN","LoadBehavior","REG_DWORD","00000003")
GUICtrlSetData($lbl_info,@CRLF & @CRLF & "Outlook AddIns aktiv.")
Sleep(500)
GUICtrlSetData($fortschritt, 95)
Return
EndFunc
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;~ Controls verstecken
Func Ausblenden()
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($radio_dsl, $gui_hide)
GUICtrlSetState($radio_umts, $gui_hide)
EndFunc
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;Controls einblenden
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($radio_dsl, $gui_show)
GUICtrlSetState($radio_umts, $gui_show)
EndFunc
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
; Exitus
Func Terminate()
Exit 0
EndFunc
;-------------------------------------------------------------------------------------------------------------------------------------------------------------
Ist alles noch etwas chaotisch... Verbesserungsvorschläge nehme ich natürlich immer gerne an.