找回密码
 加入
搜索
楼主: xlcwxl

怎样判断本机已经存在宽带连接

  [复制链接]
发表于 2009-11-20 19:38:59 | 显示全部楼层
学习一下,留个记号!感谢回复的朋友们!
发表于 2010-1-11 19:16:08 | 显示全部楼层
本帖最后由 ahkang 于 2010-1-11 19:29 编辑

我是用读取注册表键值的方法判断的(欢迎提供更好的方法):

$Key='Hklm\Software\Microsoft\RAS AutoDial\Default'
$Vol='DefaultInternet'

$Info=RegRead($Key,$Vol)
If $Info<>False  Then MsgBox(48+262144,'','您的【宽带连接】名是:'&@Cr&@Cr&$Info)

此法致命的缺陷是注册表键值被删除的情况下,会导致判断失误(而控制面板下的宽带连接却是存在着的)
发表于 2010-1-12 14:05:33 | 显示全部楼层
占位 标记了 学习啦
发表于 2010-1-13 13:16:49 | 显示全部楼层
贴一段自动判断是否存在宽带连接源码,如存在则自动备份,否则自动创建一个:
;脚本开始 → 请在这下面添加您的代码:

Opt('WinTitleMatchMode',2)
Opt('TrayIconDeBug',1)

;-------------- 取"本地连接"名称 ---------------
$objwmiservice = ObjGet('winmgmts:\\localhost\root\CIMV2')
$colitems = $objWMIService.ExecQuery ('SELECT * FROM Win32_NetworkAdapter', 'WQL', 0x10 + 0x20)
If IsObj($colitems) Then
        For $objitem In $colitems
                If $objitem.netconnectionid <> '' Then
                        $LocalLinkName=$objitem.netconnectionid
                        ;MsgBox(262144,'',$LocalLinkName)
                EndIf          
        Next
EndIf
;-----------------------------------------------
ShellExecute('Ncpa.Cpl')
$ConfigDir=@AppDataCommonDir&'\Microsoft\Network\Connections\Pbk'
$PhoneBook=$ConfigDir&'\RasPhone.Pbk'
$BackFile=$ConfigDir&'\RasPhone.Bak'
$NetWin='网络连接'
For $a=1 To 5000
        If WinExists($NetWin,$NetWin) Then
                WinSetTrans($NetWin,$NetWin,0)
                ExitLoop
        EndIf
Next
$Num=ControlListView($NetWin,$NetWin,'SysListView321','GetItemCount')
If $Num>=2 Then
For $i=0 To $Num
        $LinkName=ControlListView($NetWin,$NetWin,'SysListView321','GetText',$i)
        If $LinkName<>False And $LinkName<>$LocalLinkName Then
                WinClose($NetWin,$NetWin)
                $AskMsg=MsgBox(52+262144,'   询问: 请选择一个操作...','貌似您已经创建【'&$LinkName&'】过了, 重新创建吗? ',5)
                If $AskMsg=7 Then
                        Exit
                Else
                        FileDelete(@DesktopCommonDir&'\'&$LinkName&'.Lnk')
                        If FileExists($PhoneBook) Then FileCopy($PhoneBook,$BackFile,1)
                        FileDelete($PhoneBook)
                        DllCall('Shell32.Dll','None','SHChangeNotify','Int',0x08000000,'Int',0x00000000 + 0x00001000,'Ptr',0,'Ptr',0)
                EndIf
        EndIf
Next
EndIf


$LinkCmd='RunDll32 NetShell.Dll,StartNCW'
Run($LinkCmd)
$NextBtn='[Text:下一步(&N) >]'
$FinishBtn='[Text:完成]'
$FirstBtn='Button1'
$SeconBtn='Button2'
$UserName='您的宽带账号' ;请修改此处为您的宽带账号
$PassWord='您的宽带密码' ;请修改此处为您的宽带密码
$Title='连接向导'
$WB1='欢迎使用'
$WB2='连接到 Internet'
$WB3='您想怎样连接'
$WB4='用户名和密码'
$WB5='您在此输入'
$WB6='用户名'
$WB7='正在完成'

For $a=1 To 5000
        If WinExists($Title,$WB1) Then
                WinSetTrans($Title,$WB1,0)
                ExitLoop
        EndIf
Next
ControlClick($Title,$WB1,$NextBtn)

WinWait($Title,$WB2)
ControlClick($Title,$WB2,$NextBtn)

WinWait($Title,$WB3)
ControlCommand($Title,$WB3,$SeconBtn,'Check')
ControlClick($Title,$WB3,$NextBtn)

WinWait($Title,$WB4)
ControlCommand($Title,$WB4,$SeconBtn,'Check')
ControlClick($Title,$WB4,$NextBtn)

WinWait($Title,$WB5)
ControlSetText($Title,$WB5,'Edit1','宽带连接')
ControlClick($Title,$WB5,$NextBtn)

WinWait($Title,$WB6)
ControlSetText($Title,$WB6,'Edit1',$UserName)
ControlSetText($Title,$WB6,'Edit2',$PassWord)
ControlSetText($Title,$WB6,'Edit3',$PassWord)
ControlClick($Title,$WB6,$NextBtn)

WinWait($Title,$WB7)
ControlCommand($Title,$WB7,$FirstBtn,'Check')
ControlClick($Title,$WB7,$FinishBtn)
;-------------------- 刷新所有图标 ------------------------
$Size = DllCall('User32.Dll','Int','GetSystemMetrics','Int',11)
RegWrite('Hkcu\Control Panel\Desktop\WindowMetrics', 'Shell Icon Size', 'REG_SZ', $Size[0]+1)
DllCall('User32.Dll', 'Int', 'SendMessage', 'Hwnd', 0xFFFF, 'Int', 0x001A, 'Int', 0, 'Int', 0)
RegWrite('Hkcu\Control Panel\Desktop\WindowMetrics', 'Shell Icon Size', 'REG_SZ', $Size[0])
DllCall('User32.Dll', 'Int', 'SendMessage', 'Hwnd', 0xFFFF, 'Int', 0x001A, 'Int', 0, 'Int', 0)
;----------------------------------------------------------
If WinWait('网络配置','指定名称',2) Then WinClose('网络配置','指定名称')
WinClose($Title,$WB7)

While 1
        If WinExists($NetWin) Then
                WinClose($NetWin)
        Else
                ExitLoop
        EndIf
WEnd

ShellExecute('Ncpa.Cpl')
For $a=1 To 5000
        If WinExists($NetWin,$NetWin) Then
                ExitLoop
        EndIf
Next
Send('{F5}')
Sleep(8000)
WinClose($NetWin)
发表于 2010-1-13 13:17:17 | 显示全部楼层
本帖最后由 ahkang 于 2010-1-13 13:26 编辑

看过了宽带连接的多种创建方式,有调用对话框创建的和先写入临时文件再复制到系统指定目录的两种方法。
经测试,沿用对话框创建的可靠性要高得多,写入临时文件或直接写*.Pbk文件这种方式我曾经也用过,但是
会出现无法正常连接的现象,电话咨询10000号回答是:“您把现在的那个宽带连接删除了,再重新创建一个
宽带连接嘛!”,照此方法一试,果然成功了。

补充说明:上面这个方法没有试过多个 ADSL 拨号连接的方案(其实,宽带连接无论多少,只需一个就足够了),
     很可能会出现判断失误现象。
发表于 2010-1-14 19:55:56 | 显示全部楼层
记号,顶8楼斑竹````
发表于 2013-4-12 11:52:08 | 显示全部楼层
用注册表吧。。这个不错的。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-17 23:42 , Processed in 0.062519 second(s), 13 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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