Нашел самый быстрый способ получить внешний IP (сравнивал с тремя найденными в AutoIT вариантами). Не зависит от доступности внешних web-ресурсов.
Правда, проверял пока только на XP.
В случае отсутствия соединения возвращает пустую строку.
Правда, проверял пока только на XP.
В случае отсутствия соединения возвращает пустую строку.
Код:
Func _GetPublicIP()
Local $objWMIService, $oNetworkConfig, $sPublicIPAddress='', $Caption
Switch @OsLang
Case '0419'
$Caption='[00393219] Минипорт WAN (IP)'; для русской OS
Case '0409'
$Caption='[00393219] Miniport WAN (IP)'; для английской OS
Case Else
Return SetError(1,-1, $sPublicIPAddress); а для прочих извиняйте - неизвестный язык
EndSwitch
$objWMIService = ObjGet('winmgmts:{impersonationLevel=impersonate}\\.\root\CIMV2')
If Not IsObj($objWMIService) Then Return SetError(2,-1, $sPublicIPAddress)
$oNetworkConfig= $objWMIService.ExecQuery("select IPAddress from Win32_NetworkAdapterConfiguration " & _
"where IPEnabled=TRUE And Caption='" & $Caption & "'")
If Not IsObj($oNetworkConfig) Then Return SetError(3,-1, $sPublicIPAddress)
For $IPConfig In $oNetworkConfig
$sPublicIPAddress=$IPConfig.IPAddress(0)
Next
Return $sPublicIPAddress
EndFunc