关于IP地址获取的问题。
我要怎么才能获取到指定了名字的VPN连接的IP?我的VPN连接名称为4235 顶上去,找高手帮忙啊。 还没有在VPN中使用过。
我知道的:Global $_Networdxx = _NetworkAdapterInfo();得到活动网卡的信息
这个是获取活动的网卡信息的,你试试。 这个要调用什么UDF? 这个能调用到物理网卡,或是虚拟机生成的虚拟网卡,VPN还是不行。 好像论坛上有相关udf吧!! 好像论坛上有相关udf吧!! 回复 5# freedom
VPN没环境。。爱莫能助! 回复 7# ye5022
都找完了。没有。要不就是获取的不精确。
#include <ACN_NET.au3>
_NetworkAdapterInfo()
这个不行。
#include <Inet.au3>
$VPNip=@IPAddress2
这个获取的时候只能获取一个。有的机器上能正确,有的机器上是
$VPNip=@IPAddress1 回复 8# chenronting
要VPN账号密码,还有服务器地址我可以提供的。 UDF里面有一个IP方面的你可以看看 论坛有些和VPN相关的帖子,去搜索参考参考 回复 11# xz00311
看过了。只有这两个
#include <Inet.au3>
#include <ACN_NET.au3>
论坛上搜VPN里面的都没有相关的。 本帖最后由 chenronting 于 2011-7-13 22:02 编辑
回复 13# freedom
我已给你QQ消息,应该可以;你修改一下;
以下是我的源码:
#include <Array.au3>
#include <Constants.au3>
Func _Cmdhx($blt)
Local $foo, $array, $text
$foo = Run(@ComSpec & ' /c ' & $blt, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
If @error Then Return SetError(1)
ProcessWaitClose($foo)
$text = StdoutRead($foo)
$array = StringSplit($text, @CRLF)
Return $array
EndFunc ;==>_Cmdhx
Global $ipxx = _Cmdhx('ipconfig /all');得到回显
For $i = 1 To $ipxx;循环判断
If StringLeft($ipxx[$i], StringLen('Ethernet adapter')) == 'Ethernet adapter' Then;如果有此关键词,此为本地连接的
Local $temp=StringTrimRight(StringStripWS(StringStripWS(StringMid($ipxx[$i],StringInStr($ipxx[$i],'adapter')+8),4),1),1);得到连接名
;~ MsgBox(0,0,$temp)
Global $net1 = _xinxifenjie($ipxx, $i + 1);得到此连接的详细信息
$i=$net1;设置变量 i 的位置
$net1=$temp;设置连接名
_ArrayDisplay($net1, $i);显示信息
;~ MsgBox(0,$ipxx[$xi] & ' ' & StringInStr($ipxx[$xi],':'),StringStripWS(StringMid($ipxx[$xi],StringInStr($ipxx[$xi],':')+1),4))
EndIf
If StringLeft($ipxx[$i], StringLen('PPP adapter')) == 'PPP adapter' Then;如果有此关键词,此为 VPN 连接
Local $temp=StringTrimRight(StringStripWS(StringStripWS(StringMid($ipxx[$i],StringInStr($ipxx[$i],'adapter')+8),4),1),1)
;~ MsgBox(0,1,$temp)
Global $net2 = _xinxifenjie($ipxx, $i + 1)
$i=$net2
$net2=$temp
_ArrayDisplay($net2, $i)
EndIf
Next
Func _xinxifenjie($array, $i);得到连接详细信息的Func
Local $Return
;~ _ArrayDisplay($array, $i)
For $subi = $i To $array
If $array[$subi] <> '' Then
Switch StringLeft(StringStripWS($array[$subi], 1), 4);先删除开头的空格,再得到前4个字符
Case 'Desc'
$Return = StringStripWS(StringStripWS(StringMid($array[$subi],StringInStr($array[$subi],':')+1),4),1)
$subi += 2
Case 'Phys'
$Return = StringStripWS(StringStripWS(StringMid($array[$subi],StringInStr($array[$subi],':')+1),4),1)
$subi += 2
Case 'IP A'
$Return = StringStripWS(StringStripWS(StringMid($array[$subi],StringInStr($array[$subi],':')+1),4),1)
$subi += 2
Case 'Subn'
$Return = StringStripWS(StringStripWS(StringMid($array[$subi],StringInStr($array[$subi],':')+1),4),1)
$subi += 2
Case 'Defa'
$Return = StringStripWS(StringStripWS(StringMid($array[$subi],StringInStr($array[$subi],':')+1),4),1)
$subi += 2
Case 'DNS '
$Return = StringStripWS(StringStripWS(StringMid($array[$subi],StringInStr($array[$subi],':')+1),4),1)
$subi += 3
$Return = StringStripWS($array[$subi], 8)
$Return = 8
$Return=$subi
;~ _ArrayDisplay($Return, 'Debug~~~')
Return $Return;返回数组
EndSwitch
EndIf
Next
EndFunc ;==>_xinxifenjie
回复 14# chenronting
win7 SP1 32位旗舰版,执行后没反应。
页:
[1]
2