Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    143

    Script VBscript che genera blocco pc

    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
    Gennaro

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Dubito che qualcuno possa aiutarti il vb è un linguaggio troppo vecchio e limitato a IE (non so neanche se le versioni tipo 9 e 10 lo supportano) per capire dov'è il problema e risolverlo
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Dubito che qualcuno possa aiutarti il vb è un linguaggio troppo vecchio e limitato a IE (non so neanche se le versioni tipo 9 e 10 lo supportano) per capire dov'è il problema e risolverlo
    a parte il giudizio "tranchant", che cosa c'entra IE?

  4. #4
    Quote Originariamente inviata da galgen Visualizza il messaggio
    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
    non ho capito il problema, puoi spiegare meglio? grazie

  5. #5
    e comunque io inizierei col togliere (commentare) la OnErrorResumeNext

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Quote Originariamente inviata da optime Visualizza il messaggio
    a parte il giudizio "tranchant", che cosa c'entra IE?
    Che per quanto ne so il vb script lato client è (era) un linguaggio funzionante solo su IE, ma potrei avere una informazione sbagliata e in questo caso mi scuso con Gennaro e spero che col tuo aiuto risolva.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Che per quanto ne so il vb script lato client è (era) un linguaggio funzionante solo su IE, ma potrei avere una informazione sbagliata e in questo caso mi scuso con Gennaro e spero che col tuo aiuto risolva.
    VBScript può essere usato anche in script a sé stanti (.vbs) da eseguire su macchine Windows, spesso si usa per accedere a interfacce WMI e simili; credo che sia questo il caso del thread in questione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    143
    1000 Grazie per i vostri interventi. Comunque quando testo lo script commento logicamente On Error Resume Nextin per evidenziare eventuali errori. Si lo script è un .vbs. Che gira solo su IE lo so ma a me non interessa visto che lo script serve per testare un applicazione che gira con SO Windows. Grazie Mitaly per aver compreso il senso dello script. Cmq lo script non genera alcun errore ma blocca il pc quando '***** VERIFICA STATO PROGRAMMA l'errore è perché uso AppActivate visto che non sono riuscito a trovare nulla che mi dica se la finestra del programma è attiva o iconizzata. Ragazzi confido nel vostro aiuto. Conoscere o studiare qualche linguaggio anche un po' obsoleto tante volte ti aiuta a risolvere problemi ai quali i super moderni linguaggi non arrivano... studiate il DOS... Grazie
    Gennaro

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    Lo script che mostri è lungo e non molto chiaro, tuttavia balza agli occhi uno strano Do While 1 = 1. Ha un senso?


    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Dubito che qualcuno possa aiutarti il vb è un linguaggio troppo vecchio e limitato a IE (non so neanche se le versioni tipo 9 e 10 lo supportano)
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Che per quanto ne so il vb script lato client è (era) un linguaggio funzionante solo su IE, ma potrei avere una informazione sbagliata
    Forse sarebbe meglio informarsi prima.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da Grumpy Visualizza il messaggio
    uno strano Do While 1 = 1.


    Sembrerebbe il ciclo infinito con cui avviene il controllo. E a giudicare dagli Sleep i controlli sono fatti ogni 2,5 minuti ...

    A parte questo, non è stato spiegato a cosa serva l'accesso ad Access e tutto il lavoro fatto con il DB ...

    Grumpy
    Bentrovato!
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.