WSHでUPnP対応ルータからWAN側IPを取得する
自宅サーバのアドレスをDDNSなどに登録する人向け、でしょうか。
Dim deviceFinder Set deviceFinder = CreateObject("UPnP.UPnPDeviceFinder") Dim devices, device, service Set devices = deviceFinder.FindByType("urn:schemas-upnp-org:service:WANIPConnection:1", 0) 'WANIPConnection がだめなら WANPPPConnection や InternetGatewayDevice を試してみて For Each device In devices For Each service In device.Services If (service.ServiceTypeIdentifier = "urn:schemas-upnp-org:service:WANIPConnection:1") _ Or (service.ServiceTypeIdentifier = "urn:schemas-upnp-org:service:WANPPPConnection:1") Then Dim ret, emptyArray(0), outArray(1) ret = service.InvokeAction("GetExternalIPAddress", emptyArray, outArray) WScript.Echo "ExternalIPAddress = " & outArray(0) End If Next Next
XPでは「UPnPユーザーインターフェース」を有効にする。
2000はUPnPに対応していない?(DirectXを入れると動く?)
最初JScriptで作ろうとしたがInvokeActionの引数がVBArray型のため無理なよう。