Подскажите пожалуйста как работает ф-ция эта:
И будет ли она работать корректно на windows xp?
Код:
Func _Internet_Ping_URL($sPing_URL = "http://www.google.ru/", $iPing_TimeOut = 1000)
;без аргументов проверяет только наличие интернета.
;с первым аргументом пингует конкретный URL не зависимо от наличия интернета.
Local Const $INTERNET_CONNECTION_MODEM = 0x1
Local Const $INTERNET_CONNECTION_LAN = 0x2
Local Const $INTERNET_CONNECTION_PROXY = 0x4
Local Const $INTERNET_CONNECTION_OFFLINE = 0x20
Local Const $INTERNET_CONNECTION_CONFIGURED = 0x40
Local $iRetState = 99
Local $aPing_Host = StringRegExp($sPing_URL, 'http://(.*?)/', 3);выдираем хост из $sPing_URL
If Not IsArray($aPing_Host) Then Return $iRetState;ошибка в URL
$sPing_Host = $aPing_Host[0]
Local $stInetGetConnectedState = DllStructCreate("int")
DllCall("wininet.dll", "int", "InternetGetConnectedState", "ptr", DllStructGetPtr($stInetGetConnectedState), "dword", 0)
Local $s_stDataState = DllStructGetData($stInetGetConnectedState, 1)
If BitAND($s_stDataState, $INTERNET_CONNECTION_MODEM) Or _
BitAND($s_stDataState, $INTERNET_CONNECTION_PROXY) Then $iRetState = 1;есть подключение к интернету
If BitAND($s_stDataState, $INTERNET_CONNECTION_OFFLINE) Then $iRetState = 0;нет подключения к интернету
If $sPing_Host = "google.com" Then;если функция без аргументов
If $iRetState = 0 Then
Local $iPingCheck = Ping($sPing_Host, $iPing_TimeOut);пингуем "google.com"
If $iPingCheck > 0 Then $iRetState = 1;есть подключение к интернету
EndIf
Else
Local $iPingCheck = Ping($sPing_Host, $iPing_TimeOut);пингуем хост "$sPing_URL в любом случае
If $iPingCheck > 0 Then
$iRetState = 1;есть подключение к интернету и хост доступен
Else
$iRetState = 999; хост не доступен.
EndIf
EndIf
Return $iRetState
EndFunc ;==>_Internet_Ping_URL
И будет ли она работать корректно на windows xp?