Batch file 为网络连接添加某种类型的事件侦听器

Batch file 为网络连接添加某种类型的事件侦听器,batch-file,vbscript,wmi,Batch File,Vbscript,Wmi,我有以下资源可供支配: VBScript、WMI查询、注册表项/值、.bat批处理文件 使用这些资源的任意组合,我需要创建某种事件侦听器,当计算机重新建立与网络的连接时,它将触发.bat文件 我在实验室工作,不断有机器改变网络,我们使用BGinfo.exe在背景图像中显示计算机所在的网络。所以我要做的是设置一个侦听器,检查网络是否失去连接并重新连接,然后重新运行批处理文件以更新背景 如何执行类似于eventListener.on('connection',goIntoSomeCallbackFu

我有以下资源可供支配:

VBScript、WMI查询、注册表项/值、.bat批处理文件

使用这些资源的任意组合,我需要创建某种事件侦听器,当计算机重新建立与网络的连接时,它将触发.bat文件

我在实验室工作,不断有机器改变网络,我们使用BGinfo.exe在背景图像中显示计算机所在的网络。所以我要做的是设置一个侦听器,检查网络是否失去连接并重新连接,然后重新运行批处理文件以更新背景

如何执行类似于
eventListener.on('connection',goIntoSomeCallbackFunction)
?如果使用VBscript无法做到这一点,那么是否有替代方案?

以下是我的解决方案:

dim shell, ip
set shell=createobject("wscript.shell")


function main()

Dim status, result

result = False


'Here we have to loop every few seconds to look at connectivity
Do

result = statusChanged() 

If result Then
    shell.Run "D:\tools\Batches\updateBG.bat"
End If

WScript.Sleep(1000)

Loop While True

End function

function statusChanged()

Dim found, status

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration")

status = False
found = False

For Each result in colItems
    If Not isNull(result.IPAddress) Then
        If ip <> result.IPAddress(0) Then
            ip = result.IPAddress(0)
            status = True
        End If
    End If
Next

statusChanged = status

End function

main()
dim外壳,ip
set shell=createobject(“wscript.shell”)
函数main()
暗淡的状态、结果
结果=错误
“在这里,我们必须每隔几秒钟循环一次,以查看连通性
做
结果=状态已更改()
如果结果是这样的话
shell.Run“D:\tools\Batches\updateBG.bat”
如果结束
WScript.Sleep(1000)
在为真时循环
端函数
函数statusChanged()
已找到Dim,状态为
strComputer=“”
设置objWMIService=GetObject(“winmgmts:_
&“{impersonationLevel=impersonate}!\\”&strComputer&“\root\cimv2”)
Set colItems=objWMIService.ExecQuery(“从Win32\U NetworkAdapterConfiguration中选择*)
状态=错误
发现=错误
对于每一个结果,以colItems表示
如果不是isNull(result.IPAddress),则
如果ip结果为.IPAddress(0),则
ip=结果。ip地址(0)
状态=真
如果结束
如果结束
下一个
状态更改=状态
端函数
main()
可能的重复: