找回密码
 加入
搜索
查看: 4542|回复: 5

[AU3基础] 不同名称的本地连接如何改“自动获取IP地址” 已解决

  [复制链接]
发表于 2013-1-2 13:23:41 | 显示全部楼层 |阅读模式
本帖最后由 p7749 于 2013-1-3 13:42 编辑

在如何自动获取IP地址这个问题上,前面的帖子都有说明,基本上就是用下面的语句:
#Include <Services.au3>
_Service_Start("Dhcp")      ;打开DHCP服务
RunWait(@ComSpec & ' /c '&'netsh int ip set address name="本地连接" source=dhcp',"", @SW_HIDE)      ;自动获取IP地址
RunWait(@ComSpec & ' /c '&'netsh int ip set dns name="本地连接" source=dhcp',"", @SW_HIDE)                         ;自动获取DNS

不过这里有个问题,那就是不同机器上的“本地连接”名称可能不一样,比如我自己的电脑本地连接就是“本地连接 4” 。
有什么办法不管本地连接是什么名称都可以把本地连接改成自动获取IP地址呢?
发表于 2013-1-2 13:49:38 | 显示全部楼层
给您我上次作的东西,请自己再修改吧。

#include <array.au3>
#include <GUIConstantsEx.au3>

;~ get netadaptname
Local $oClassSet, $oClass, $oLocator
Local $oService, $sMesStr

$oLocator = ObjCreate("WbemScripting.SWbemLocator")
$oService = $oLocator.ConnectServer

$oClassSet = $oService.ExecQuery("Select * From Win32_NetworkAdapter Where NetConnectionID IS NOT NULL")

For $oClass In $oClassSet
        $sMesStr = $sMesStr & "" & $oClass.NetConnectionID
        $CardName = StringRegExp($sMesStr,"區域連線.+\d",3)
Next

;~ gui


$newIp = InputBox("IP","請輸入IP","10.1.")
If @error Then Exit
$newSubnet = "255.255.255.0"
$newDG = InputBox("Gateway","請輸入Gateway","10.1.")
If @error Then Exit
$run=runwait ('netsh interface ip set address name=' & '"' & $CardName[0] & '" static ' & $newIP & ' '& $newSubnet & ' ' & $newDG & ' 1',"",@SW_Hide)
MsgBox(4096,"修改IP","已完成")

评分

参与人数 1金钱 +30 收起 理由
haijie1223 + 30 乐于助人~

查看全部评分

发表于 2013-1-3 09:23:14 | 显示全部楼层
抱歉,我还真没看到您是要改成DHCP,稍微修改了下代码,请试试看。

#include <array.au3>
#include <GUIConstantsEx.au3>

;~ get netadaptname
Local $oClassSet, $oClass, $oLocator
Local $oService, $sMesStr

$oLocator = ObjCreate("WbemScripting.SWbemLocator")
$oService = $oLocator.ConnectServer

$oClassSet = $oService.ExecQuery("Select * From Win32_NetworkAdapter Where NetConnectionID IS NOT NULL")

For $oClass In $oClassSet
        $sMesStr = $sMesStr & "" & $oClass.NetConnectionID
        $CardName = StringRegExp($sMesStr, "區域連線.+\d", 3) ; 區域連線請改本地連接
Next

runwait ('netsh interface ip set address name=' & '"' & $CardName[0] & '" dhcp ' ,"",@SW_Hide)
runwait ('netsh interface ip set dns name=' & '"' & $CardName[0] & '" dhcp ' ,"",@SW_Hide)

上面的我自己測試過,在我電腦是可以運作的。
 楼主| 发表于 2013-1-3 13:37:35 | 显示全部楼层
非常感谢您的回复,虽然我这个初学者,看不明白前面你引用的 COM  或者 WMI的内容,但是仍然从你的程序中学会 了如何把AU3的变量代入DOS命令的方法。这是我刚想问的问题。
上面的问题我已经用一个看起来简单点和方法解决了。程序如下
RunWait(@ComSpec & ' /c '&'ipconfig >>1.txt',"",@SW_HIDE)
$file=FileRead("1.txt")
$name=StringRegExp($file,"本.+(?=:)",2)     ;找到本地连接的真实名称,存在变量$name[0] 中

RunWait(@ComSpec & ' /c '&'netsh int ip set address name='&'"'&$name[0]&'"'&' source=dhcp',"", @SW_HIDE)
RunWait(@ComSpec & ' /c '&'netsh int ip set dns name='&'"'&$name[0]&'"'&' source=dhcp',"", @SW_HIDE)
FileDelete("1.txt")
发表于 2013-3-11 23:40:26 | 显示全部楼层
都是用dos命令呀
发表于 2017-6-25 12:38:26 | 显示全部楼层
上面的我自己測試過
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-24 11:11 , Processed in 0.073458 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表