Hi Leute, ich schreibe gerade nen VPN Handler, das VPN Programm an sich ist nicht auslesbar (d.h. ich könnte darüber nicht die aktuelle IP erfragen) also möchte ich das über eine externe Seite (whoer.net) machen.
VPN Connect Function:
Code
Func _HMAconnect()
If ProcessExists ("HMA! Pro VPN.exe") Then ;~ Falls HMA läuft, beenden
_HMAdisconnect()
EndIf
Sleep (1000)
For $i = 1 to 5 Step 1
If ProcessExists ("HMA! Pro VPN.exe") = 0 Then
Run ($vpndir&"HMA! Pro VPN.exe") ;~ 5x HMA versuchen zu starten
Sleep (1000)
If $i = 5 Then
_Error("HMA konnte nicht gestartet werden. Überprüfe den Pfad in der config.ini") ;~ HMA konnte nicht aufgerufen werden, Pfad Problem
MsgBox (48,"VPN Problem","Writing error.log...",2)
Exit
EndIf
EndIf
Next
If ProcessExists ("HMA! Pro VPN.exe") = 0 Then ;~ Falls HMA nicht geöffnet wurde, neu starten
_HMAconnect()
EndIf
Sleep (2000)
$sTitle = WinGetTitle ("HMA! Pro VPN")
$i = 0
Do
$i += 1
Sleep (1000)
If $i = IniRead ("config.ini","Intern","VPN Wait","") Then
_Error("HMA Connect Problem. HMA start dauert zu lange")
MsgBox (48,"VPN Problem", "Writing error.log...",2)
_HMAconnect()
EndIf
Until WinGetState($sTitle) = 15 ;~ warten bis HMA im Focus ist
Sleep (1000)
Do
Sleep(250)
WinActivate($sTitle)
Until ControlCommand($sTitle, "", "[NAME:comboBoxVPNServer]", "IsEnabled") ;~ HMA in den Focus holen
_IPFlush() ;~ IP DNS Flush erneuern
$sServ = Random (1,8,1) ;~ Random Server auswahl
If $sServ = 1 Then
$sServer = "Germany, Bavaria, Munich (LOC 1)"
EndIf
If $sServ = 2 Then
$sServer = "Germany, Bavaria, Munich (LOC 2)"
EndIf
If $sServ = 3 Then
$sServer = "Germany, Bavaria, Nuremberg (LOC 1)"
EndIf
If $sServ = 4 Then
$sServer = "Germany, Bavaria, Nuremberg (LOC 2)"
EndIf
If $sServ = 5 Then
$sServer = "Germany, Bavaria, Nuremberg (LOC 3)"
EndIf
If $sServ = 6 Then
$sServer = "Germany, Berlin (LOC 1)"
EndIf
If $sServ = 7 Then
$sServer = "Germany, Dusseldorf (LOC 2)"
EndIf
If $sServ = 8 Then
$sServer = "Germany, Hesse, Frankfurt (LOC 1)"
EndIf
Do
_GUICtrlComboBox_SelectString(ControlGetHandle($sTitle, "", "[NAME:comboBoxVPNServer]"), $sServer)
WinActivate($sTitle)
Until ControlGetText($sTitle, "", "[NAME:comboBoxVPNServer]") = $sServer ;~ Server auswählen
MouseMove(0, 0, 0)
WinActivate($sTitle)
ControlClick($sTitle, "", "[NAME:comboBoxVPNServer]")
Sleep(200)
WinActivate($sTitle)
ControlClick($sTitle, "", "[NAME:comboBoxVPNServer]")
Sleep (500)
ControlClick($sTitle, "", "[NAME:buttonConnectToVPN]") ;~ Connecten
$i = 0
Do
$i += 1
Sleep (1000)
If $i = IniRead ("config.ini","Intern","VPN Wait","") Then ;~ warten bis verbunden ist
_Error("HMA Connect Problem. HMA connect dauert zu lange. Server: "&$sServer)
MsgBox (48,"VPN Problem", "Writing error.log...",2)
_HMAconnect()
EndIf
Until ControlCommand($sTitle, "", "[NAME:buttonDisconnectVPN]", "IsEnabled") and ControlGetText($sTitle, "", "[NAME:textBoxNewIPAddress]") <> "Loading..."
EndFunc ;~ HMA Connect
Alles anzeigen
Meine Function um mir meine aktuelle IP zu holen:
Code
Func _IP()
$hSession = _WinHttpOpen ("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0")
$sHost = "whoer.net"
$hHoas = _WinHttpConnect ($hSession,$sHost)
$sPaket = _WinHttpSimpleRequest($hHoas, "GET")
$ip = _StringBetween ($sPaket,'title="Copy to clipboard">','</strong>')
_WinHttpCloseHandle ($hSession)
_WinHttpCloseHandle ($hHoas)
Return $ip[0]
EndFunc
Jetzt habe ich folgendes Problem, Meine _IP() Function fliegt sporadisch auf die schnauze (ich glaube wenn die Verbindung zum VPN noch nicht besteht)
Bekomme ab und zu (nicht immer) die IP nicht via _StringBetween ausgelesen.
Gibt es evtl. eine möglichkeit via StringRegExp und könnte mir jemand das Pattern dafür schreiben?
Grüße =)