Function 循环函数?

Function 循环函数?,function,loops,vbscript,call,Function,Loops,Vbscript,Call,是否可以循环函数直到项=TRUE 我正在尝试ping服务器。。。 一旦建立了连接,或Ping=TRUE,则程序将执行。 如果未建立连接,则ping将重复,直到其为真 我的代码如下。 如果为TRUE,MyProgram将打开。 如果为False,将再次调用该函数。但这并没有发生…实际上什么都没有发生,它只是存在 非常感谢您的帮助。 如果有人知道一个更有效的方法来完成这项任务,那么请让我知道。 谢谢大家! Function Ping Dim oPing, oRetStatu

是否可以循环函数直到项=TRUE

我正在尝试ping服务器。。。 一旦建立了连接,或Ping=TRUE,则程序将执行。 如果未建立连接,则ping将重复,直到其为真

我的代码如下。 如果为TRUE,MyProgram将打开。 如果为False,将再次调用该函数。但这并没有发生…实际上什么都没有发生,它只是存在

非常感谢您的帮助。 如果有人知道一个更有效的方法来完成这项任务,那么请让我知道。 谢谢大家!

     Function Ping
        Dim oPing, oRetStatus, bReturn
        Set oPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address='" & "strHost" & "'")

        For Each oRetStatus In oPing
            If IsNull(oRetStatus.StatusCode) Or oRetStatus.StatusCode <> 0 Then
                bReturn = False
            Else
                bReturn = True
            End If
            Set oRetStatus = Nothing
        Next
        Set oPing = Nothing

    Ping = bReturn
    End Function

If Ping Then
    Call MyProgram
Else
    Call PingSub
End If

Sub MyProgram
    Dim objShell
        Set objShell = WScript.CreateObject( "WScript.Shell" )
        objShell.Run("\\Path\To\My\Program.exe")
        Set objShell = Nothing
End Sub

Sub PingSub
    Call Ping
End Sub
函数Ping
昏昏欲睡
设置oPing=GetObject(“winmgmts:{impersonationLevel=impersonate}”).ExecQuery(“从Win32中选择*,其中地址=”&“strHost”&“”)
对于oPing中的每个oRetStatus
如果为空(oRetStatus.StatusCode)或oRetStatus.StatusCode 0,则
bReturn=False
其他的
bReturn=True
如果结束
设置oRetStatus=无
下一个
设置oPing=无
Ping=bReturn
端函数
如果平那么
调用我的程序
其他的
打电话给PingSub
如果结束
次级方案
昏暗的奥布舍尔
设置objShell=WScript.CreateObject(“WScript.Shell”)
运行(“\\Path\To\My\Program.exe”)
Set objShell=Nothing
端接头
亚平亚
打电话给平
端接头

这将是一个递归函数

我假设您正在使用VBA


下面是一个来自MS的示例,它将是一个递归函数

我假设您正在使用VBA

下面是MS中的一个示例,请尝试这样做:

Option Explicit
Dim MyLoop,strComputer,objPing,objStatus
MyLoop = True
While MyLoop = True
    strComputer = "smtp.gmail.com"
    Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery _
    ("select * from Win32_PingStatus where address = '" & strComputer & "'")
    For Each objStatus in objPing
        If objStatus.Statuscode = 0 Then
            MyLoop = False
            Call MyProgram()
            wscript.quit
        End If
    Next
    Pause(10) 'To sleep for 10 secondes
Wend
'**********************************************************************************************
 Sub Pause(NSeconds)
    Wscript.Sleep(NSeconds*1000)
 End Sub
'**********************************************************************************************
Sub MyProgram()
Dim objShell
Set objShell = CreateObject( "WScript.Shell" )
objShell.Run("calc.exe")
Set objShell = Nothing
End Sub
'**********************************************************************************************
试着这样做:

Option Explicit
Dim MyLoop,strComputer,objPing,objStatus
MyLoop = True
While MyLoop = True
    strComputer = "smtp.gmail.com"
    Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery _
    ("select * from Win32_PingStatus where address = '" & strComputer & "'")
    For Each objStatus in objPing
        If objStatus.Statuscode = 0 Then
            MyLoop = False
            Call MyProgram()
            wscript.quit
        End If
    Next
    Pause(10) 'To sleep for 10 secondes
Wend
'**********************************************************************************************
 Sub Pause(NSeconds)
    Wscript.Sleep(NSeconds*1000)
 End Sub
'**********************************************************************************************
Sub MyProgram()
Dim objShell
Set objShell = CreateObject( "WScript.Shell" )
objShell.Run("calc.exe")
Set objShell = Nothing
End Sub
'**********************************************************************************************

美好的太棒了,哈克!我明天要考试并公布结果。非常感谢。好极了!完美无瑕!我很高兴,我让总统亲自为你的伟大工作鼓掌:[哈哈,再次感谢!很好!很棒的方法Hackoo!我明天会测试并公布我的结果。谢谢!好极了Hackoo!工作完美无瑕!我很高兴,我让总统亲自为你的伟大工作鼓掌:[哈哈,再次感谢!