作者cole945 (躂躂..)
看板EZsoft
标题Re: [请益] 拨接到想要的ip
时间Fri Feb 22 20:10:11 2008
※ 引述《vernc (cralvin)》之铭言:
: 或那位提供这方面vbs要看那个网页或那本书
(这篇是被修改内文过的文章XD )
http://moon.cse.yzu.edu.tw/~s922254/applet/redial.vbs
陆陆续续有几个人问我程式要怎麽改..
因为我原本的程式有几个地方严重写错,
所以重改了一份~ 对一般的 user只有开头三行需要修改
BadIP = "61." ' 这里指定你不想要的开头
ShowMessage = True ' 是否要显示连线过程的讯息
SleepInt = 2000 ' 每次重连的停顿时间(毫秒)
如果 ShowMessage 为 True, 那执行时就会有个黑色画面显示每次的 IP
不想看到就改成 False,
一莫一样的程式内容我贴在下面, 以免 dead-link ||
' *****************************************
' 此段为使用者需要自行修改的部份
' *****************************************
BadIP = "61." ' 这里指定你不想要的开头
ShowMessage = True ' 是否要显示连线过程的讯息
SleepInt = 2000 ' 每次重连的停顿时间(毫秒)
' **************** 结束 ******************
If ShowMessage Then CheckStartMode
Set objWMIService = GetObject("winmgmts:" & _
"{impersonationLevel=impersonate}!\\.\root\cimv2")
' 这是例用 Windwos 提供的 WMI 来查网卡的 IP
Set wshShell = WScript.CreateObject ("WSCript.shell")
While True
tag = 0
Set colAdapters = objWMIService.ExecQuery _
("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
' 放网页资料的 table
For Each objAdapter in colAdapters
If Not IsNull(objAdapter.IPAddress) Then
For i = 0 To UBound(objAdapter.IPAddress)
If InStr(objAdapter.Caption(i),"WAN Miniport") >0 Then
' 你的 ADSL 应该是以 WAN Miniport 表示,
' 如果错了的话, 你就直接把所有网卡及其对应 IP show 出来看
' 就知道应该要捞哪张卡的 IP了
tag = 1 ' 标记找到你的 ADSl 连线
CurrIP = objAdapter.IPAddress(i)
If ShowMessage Then WScript.Echo "目前的IP: " + CurrIP
If Left( CurrIP, Len(BadIP) ) = BadIP Then
' 若 BadIP 开头, 利用 rasdial 指令断线, 停 2000毫秒後
' 重新连线, ADSL 指的是你网头连线里的 Sonet连线明称,
' 请改成你自己的
If ShowMessage Then WScript.Echo "重连中..."
wshshell.run "rasdial /disconnect", 0, True
wshshell.run "rasdial hinet", 0, True
wscript.sleep SleepInt
Else
Wscript.Quit
End if
End if
Next
End If
Next
if tag = 0 Then
WScript.Sleep 5000
' 若这次没找到你的ADSL连线(可能上次还没连成功)
' 停5秒再继续搜
End if
Wend
Sub CheckStartMode
Dim strStartExe
strStartExe = UCase( Mid( wscript.fullname, _
instrRev(wscript.fullname, "\") + 1 ) )
If Not strStartExe = "CSCRIPT.EXE" Then
set oSh = CreateObject("wscript.shell")
oSh.Run "cscript.exe """ & wscript.scriptfullname
wscript.quit
End If
End Sub
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.139.133.39
1F:→ cole945:呃..对了.因为我是远端连回家写,没测过 @.@ 应该是不会有 02/22 20:11
2F:→ cole945:问题啦囧 怕测完失败我就连不到我的电脑了..|| 02/22 20:12
3F:→ winkissimo:程式看起来有用到资料库吗?因为有看到Select * From... 02/22 21:20
4F:→ cole945:那是 WMI的东西,WMI Query Language. 利用SQL-like的语法 02/22 21:54
5F:→ cole945:查询或修改windows上相关的管理资讯~ 02/22 21:54
6F:→ HZYSoft:Cool!!! 原 po 真强,完全不知道有这种鬼东西 = = 02/22 22:00
7F:→ cole945:呃..过奖了|| VB算是最试合用来玩WMI的语言之一吧~ 如果对 02/22 22:06
8F:→ cole945:WMI有兴趣的话,小推 WMI Explorer这个小工具~可以用来直接 02/22 22:07
9F:→ cole945:浏览系统上的WMI资讯~ 02/22 22:07
10F:→ albb0920:wmi还是现在才知道.... 对了...VBS可以引dll吗? 02/23 14:13
11F:→ cole945:推文已经开始远离EZsoft板了 囧 之前研究的结果是vbs不能 02/23 15:24
12F:→ cole945:引用dll(蛮可惜的),不过有看过的作法是,有人写一个for VBS 02/23 15:24
13F:→ cole945:用来引用dll的COM元件,Create该元件利用它invoke你要的dll 02/23 15:25
14F:→ cole945:过程蛮复杂的,而且已经脱离vbs的便利性与携带性~ 不过.NET 02/23 15:26
15F:→ cole945:中很多元件是可以当COM元件用的,所以VBS可以利用.NET带来 02/23 15:27
16F:→ cole945:的丰富功能,算是另一个可考虑的方向~ 02/23 15:28
17F:推 HZYSoft:VBS 只能用 ActiveX 元件,不然 call Win32 API 啥都能做 02/23 18:37
18F:→ cole945:其实也不是不能用DLL啦~ Windows还有一招 rundll32 可以玩 02/23 19:28
20F:→ cole945:不过EntryPointer的格式有规定,不能想invoke啥就invoke啥~ 02/23 19:29
※ 编辑: cole945 来自: 220.139.149.83 (03/11 22:37)