Buongiorno ho uno script client in vb che mi testa se un applicazione è in esecuzione o se viene minimizzata. Quando nello script effettuo il test che l'applicazione è minimizzata mi si blocca il computer
codice:
 Option Explicit

On Error Resume Next

Dim strComputer, intAttesa, intAttesa2

strComputer = "."
intAttesa = 150000
intAttesa2 = 300000

Function InvertiData(Data)
Dim WD, OD
    if not(isdate(data)) then WD = Date() else WD = cdate(data)
    OD = right("00" & cstr(day(WD)),2) & "/" & right("00" & cstr(month(WD)), 2) & "/" & right("20" & cstr(year(WD)), 4)
    InvertiData = OD
End Function 

do while 1 = 1
    Dim objShell, objWMIService, colItems, objItem, bolControllo, Conn, strConnect, SQL, rsEnUs, SQLMAX, rsMAX, IDACCESSO, updACC
    Dim rsACC, updSQL, rsUpd, insSQL, rsIns, Success, Success02, strProcessId
    objShell = ""
    objWMIService = ""
    colItems = ""
    objItem = ""
    bolControllo = ""
    Conn = ""
    strConnect = ""
    SQL = ""
    rsEnUs = ""
    SQLMAX = ""
    rsMAX = ""
    IDACCESSO = ""
    updACC = ""
    rsACC = ""
    updSQL = ""
    rsUpd = ""
    insSQL = ""
    rsIns = ""
    Success = ""
    Success02 = ""
    strProcessId = ""

    Set objShell = WScript.CreateObject ("WScript.Shell")

    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    'Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_Process",,48)
    For Each objItem in colItems
        if objItem.Name="mstsc.exe" then 
            bolControllo = True
            strProcessId = objItem.ProcessId
            Exit for
        else
            bolControllo = False
        end if
    Next 
    
    Set Conn = CreateObject("ADODB.Connection")
    '***** CONNESSIONE ACCESS 2003
    'strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & objShell.CurrentDirectory & "\Accessi.mdb"
    '***** CONNESSIONE ACCESS 2013
    strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & objShell.CurrentDirectory & "\Accessi.mdb"
    Conn.Open strConnect
    
    SQL =       "SELECT E_U"
    SQL = SQL & " FROM ENTRATA_USCITA"
    SQL = SQL & " WHERE (((ENTRATA_USCITA.ID_E_U)=1));"
    Set rsEnUs = Conn.Execute(SQL)
    
    '***** CHIUSURA PROGRAMMA
    if rsEnUs("E_U") AND bolControllo = False then
        SQLMAX = "SELECT Max(IDACCESSO) AS ID FROM ACCESSI;"
        Set rsMAX = Conn.Execute(SQLMAX)
        IDACCESSO = rsMAX("ID")

        updACC = "UPDATE ACCESSI"
        updACC = updACC & " SET ACCESSI.ORA_USCITA = '" & FormatDateTime(Now(),4) & "'"
        updACC = updACC & " WHERE (((ACCESSI.IDACCESSO)=" & IDACCESSO & "));"
        Set rsACC = Conn.Execute(updACC)    
        
        updSQL = "UPDATE ENTRATA_USCITA"
        updSQL = updSQL & " SET ENTRATA_USCITA.E_U = 0"
        updSQL = updSQL & " WHERE (((ENTRATA_USCITA.ID_E_U)=1));"
        Set rsUpd = Conn.Execute(updSQL)
    '***** APERTURA PROGRAMMA
    elseif rsEnUs("E_U") = False AND bolControllo then
        Success = objShell.AppActivate(strProcessId)
        if Success then
            insSQL =           "INSERT INTO ACCESSI ( DATA, ORA_ENTRATA )"
            insSQL = insSQL & " VALUES ( '" & InvertiData(Date()) & "', '" & FormatDateTime(Now(),4) & "' );"
            Set rsIns = Conn.Execute(insSQL)
            
            updSQL = "UPDATE ENTRATA_USCITA"
            updSQL = updSQL & " SET ENTRATA_USCITA.E_U = 1"
            updSQL = updSQL & " WHERE (((ENTRATA_USCITA.ID_E_U)=1));"
            Set rsUpd = Conn.Execute(updSQL)
        end if
    '***** VERIFICA STATO PROGRAMMA
    elseif rsEnUs("E_U") AND bolControllo then
        '***** VERIFA SE E' FALSE IL PROGRAMMA E' ICONIZZATO
        Success = objShell.AppActivate(strProcessId)
        if Success = False then
            '***** ATTESA 2,5 MINUTI
            WScript.Sleep (intAttesa)
            '***** RIVERIFA TRASCORSO intAttesa SE E' FALSE IL PROGRAMMA E' ANCORA ICONIZZATO
            Success02 = objShell.AppActivate(strProcessId)
            if Success02 = False then
                SQLMAX = "SELECT Max(IDACCESSO) AS ID FROM ACCESSI;"
                Set rsMAX = Conn.Execute(SQLMAX)
                IDACCESSO = rsMAX("ID")
        
                updACC = "UPDATE ACCESSI"
                updACC = updACC & " SET ACCESSI.ORA_USCITA = '" & FormatDateTime(Now(),4) & "'"
                updACC = updACC & " WHERE (((ACCESSI.IDACCESSO)=" & IDACCESSO & "));"
                Set rsACC = Conn.Execute(updACC)    
                
                updSQL = "UPDATE ENTRATA_USCITA"
                updSQL = updSQL & " SET ENTRATA_USCITA.E_U = 0"
                updSQL = updSQL & " WHERE (((ENTRATA_USCITA.ID_E_U)=1));"
                Set rsUpd = Conn.Execute(updSQL)
            end if
        else
            WScript.Sleep (intAttesa)
        end if
    end if
    
    Conn.Close
loop
potreste darmi una mano 1000 grazie