- Offizieller Beitrag
Hallo,
ich wollte mit IsDestinationReachable die Verbindungsgeschwindigkeiten (In/Out) zu Url's ermitteln, aber da die Funktion aberwitzige Werte ausgibt, gehe ich davon aus, dass dieser Part der Funktion fehlschlägt. Die Überprüfung auf Erreichbarkeit dagegen funktioniert.
Ist das bei Euch ebenso?
If IsDestinationReachable('www.autoit.de') Then ; AutoIt erreichbar?
MsgBox(0, '', 'Erreichbar')
Else
MsgBox(0, '', 'Nicht Erreichbar')
EndIf
$aRet = IsDestinationReachable('www.autoit.de', 1)
If IsArray($aRet) Then MsgBox(0, 'Erreichbar mit Speed:', _
'InSpeed: ' & $aRet[0] & ' Kb/s' & @CRLF & _
'OutSpeed: ' & $aRet[1] & ' Kb/s' & @CRLF)
#cs - bei mir für alle Adressen:
InSpeed: 52734.4 Kb/s
OutSpeed: 52734.4 Kb/s
#ce
Func IsDestinationReachable($sDestination, $fSpeed=0) ; destination can be an IP address, a UNC name, or an URL
Local $tQOCINFO = DllStructCreate('long dwSize;long dwFlags;long dwInSpeed;long dwOutSpeed') ; dwIn/OutSpeed in bytes/second
DllStructSetData($tQOCINFO, 'dwSize', DllStructGetSize($tQOCINFO))
Local $ret = DllCall("SENSAPI.DLL", "long", "IsDestinationReachableA", _
"str", $sDestination, _
"ptr", DllStructGetPtr($tQOCINFO))
Select
Case @error
Return SetError(@error,0,0)
Case $ret[0] = 0 ; Destination nicht erreichbar
Return 0
Case Else ; Destination erreichbar
If $fSpeed Then
Local $aOut[2] = [Round(DllStructGetData($tQOCINFO, 'dwInSpeed')/1024, 1), _
Round(DllStructGetData($tQOCINFO, 'dwOutSpeed')/1024, 1)]
Return $aOut ; speed in Kb/s
Else
Return 1
EndIf
EndSelect
EndFunc