Vbs實(shí)現(xiàn)監(jiān)測(cè)斷網(wǎng)就關(guān)機(jī)的實(shí)現(xiàn)代碼
受一個(gè)朋友委托,編寫一段vbs代碼實(shí)現(xiàn)斷網(wǎng)就強(qiáng)行關(guān)閉計(jì)算機(jī)的功能,他說為學(xué)生機(jī)房上課時(shí)使用,上課時(shí)總有學(xué)生想脫離老師的監(jiān)視,為此,會(huì)拔掉網(wǎng)線或者禁用網(wǎng)卡,所以,弄個(gè)vbs腳本檢測(cè)網(wǎng)卡狀態(tài),如果斷網(wǎng)馬上強(qiáng)行關(guān)機(jī)。
代碼一
Dim objWMIService,objShell Set objWMIService = Getobject("winmgmts:\\.\root\cimv2") Set objShell = CreateObject("WScript.Shell") '實(shí)現(xiàn)實(shí)時(shí)監(jiān)測(cè) do while true Dim objNetworks,objNetwork Set objNetworks = objWMIService.execQuery("Select * From Win32_NetworkAdapter where NetConnectionID='本地連接'") For Each objNetwork In objNetworks if objNetwork.NetConnectionStatus<>2 then 'objShell.run "shutdown -s -f -t 30 -c " & chr(34) & "由于計(jì)算機(jī)網(wǎng)絡(luò)斷開,機(jī)器即將關(guān)閉" & chr(34) msgbox "網(wǎng)絡(luò)已斷開" exit for end if Next set objNetworks=nothing '延時(shí)10秒 WScript.sleep 1000*10 Loop
注:方法一是通過檢測(cè)網(wǎng)卡的狀態(tài)來進(jìn)行相應(yīng)的操作。
方法二
strIP="192.168.1.1" '實(shí)時(shí)監(jiān)測(cè) do while true Set objShell = CreateObject("WScript.Shell") If Not IsOnline_1(strIP) Then ? objShell.run "shutdown -s -f -t 30 -c " & chr(34) & "機(jī)器即將關(guān)閉" & chr(34)? wscript.quit End If wscript.sleep 1000*10 loop
=========此段函數(shù)僅供參考,不會(huì)在主程序中調(diào)用===========
通過dos窗口的方式ping,但是,屏幕上會(huì)出現(xiàn)黑色dos窗口,每運(yùn)行一次下面的函數(shù)都會(huì)彈出一次dos和色窗口,很快就會(huì)被人發(fā)現(xiàn)。
Function IsOnline(strComputer) ??? IsOnline = false ??? strCommand = "%comspec% /c ping -n 2 -w 500 " & strComputer & "" ??? Set objExecObject = objShell.Exec(strCommand) ??? Do While Not objExecObject.StdOut.AtEndOfStream ???????? strText = objExecObject.StdOut.ReadAll() ???????? If Instr(strText, "Reply") > 0 Then ?????????????????? IsOnline = true ???????? End If ??? Loop End Function
純vbs進(jìn)行ping操作,這樣不會(huì)彈出dos窗口,不會(huì)被發(fā)現(xiàn)。
Function IsOnline_1(URLstr) ??? IsOnline_1 = false strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colPings = objWMIService.ExecQuery ("Select * From Win32_PingStatus where Address = '" & URLstr & "'") ??? For Each objPing in colPings ????????? if instr(objPing.ProtocolAddress,URLstr)>0 then ?????????????????? ????? IsOnline_1=true ?????????????????? ????? exit for ???????? ? ????end if ??? Next End Function
注:方法二是通過ping一個(gè)指定的IP地址,用于檢測(cè)網(wǎng)卡的運(yùn)行狀態(tài),如果網(wǎng)卡無法通訊或者通訊失敗這樣就無法返回Ping的結(jié)果,根據(jù)這個(gè)結(jié)果判斷是否進(jìn)行強(qiáng)制關(guān)機(jī)操作。由此,還有個(gè)“意外收獲”那就是,當(dāng)斷掉指定的IP地址連接后,所有機(jī)器會(huì)自動(dòng)關(guān)閉計(jì)算機(jī),因此,此段程序還可以有別的用途,自己想吧!??!
總結(jié):以上兩種方法都是為了檢測(cè)網(wǎng)卡的運(yùn)行狀態(tài)才進(jìn)行相應(yīng)的操作的,只是實(shí)現(xiàn)方法完全不同,這你就要根據(jù)情況自行選擇了!??!
相關(guān)文章
VBScript教程 第六課VBScript運(yùn)算符
VBScript教程 第六課VBScript運(yùn)算符...2006-11-11VBScript 監(jiān)控磁盤更改事件實(shí)現(xiàn)代碼
這篇文章主要介紹了如何用vbs實(shí)現(xiàn)監(jiān)控磁盤更改事件,需要的朋友可以參考下2013-07-07用vbs實(shí)現(xiàn)對(duì)文本文件中的項(xiàng)計(jì)數(shù)
用vbs實(shí)現(xiàn)對(duì)文本文件中的項(xiàng)計(jì)數(shù)...2007-04-04在windows 64位操作系統(tǒng)上運(yùn)行32位的vbscript的方法
這篇文章主要介紹了在windows 64位操作系統(tǒng)上運(yùn)行32位的vbscript的方法,需要的朋友可以參考下2016-11-11VBS教程:VBscript屬性-IgnoreCase 屬性
VBS教程:VBscript屬性-IgnoreCase 屬性...2006-11-11VBS教程:函數(shù)-GetObject 函數(shù)
使用 GetObject 函數(shù)可以訪問文件中的 Automation 對(duì)象,而且可以將該對(duì)象賦值給對(duì)象變量。使用 Set 語句將 GetObject 返回的對(duì)象賦值給對(duì)象變量。2006-11-11