Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Recuperare il PID del vscript.exe

    Ciao a tutti,
    c'è modo di recuperare il PID del vscript.exe che sta interpretando il VBS che gira?
    in pratica ho bisogno di killare un VBS da un'altro VBS (che viene lanciato dal primo) e pensavo di farlo passandogli il PID quando lo lancia.

    Ciao e grazie GLG

  2. #2
    Si può ma devi usare un bel po' di API... domanda: perché hai necessità di killare un altro VBScript? Forse si può trovare una soluzione alternativa...
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    In Pratica devo scrivere un VBS, che utilizzatto assieme a Miscrosoft SMS, avvisa l'utente che sto per installargli un nuovo software sul PC.
    Il VBS apre una MSGBOX che avvisa l'utente e che gli permette di eseguire l'installazione subito (premendo yes) o di rimandarla di 5 minuti (premendo no), dopo 4 volte che la rimanda l'installazione parte comunque.
    e fino qui nessun problema....
    il problema sta nel fatto che il cliente vuole che l'installazione parta comunque dopo 20min se non si preme nessun tasto.
    quindi, non trovando il modo di fare una MSGBOX che si chiude da sola dopo un tempo dato, ho fatto si che il VBS con la MSGBOX ne crei e lanci un'altro che dopo 20 min lancia il pacchetto SMS. a questo punto però, ad installazione avvenuta, devo far sparire la MSGBOX che chiedeva di effettuare l'installazione, e pensavo di farlo killando il VBS.

    Qualche idea?

    Grazie e ciao GLG

  4. #4
    Effettivamente ti servirebbero dei thread o delle finestre non modali... funzionalità completamente assenti da VBS...
    Comunque puoi fare così: fai in modo che lo script "supervisore" avvii quello che mostra la MsgBox in questo modo:
    codice:
    Dim WshShell, oExec
    Set WshShell = CreateObject("WScript.Shell")
    
    Set oExec = WshShell.Exec("wscript tuoscript.vbs")
    aspetta i tuoi 20 minuti con i metodi che preferisci, quindi verifica se il processo è ancora in esecuzione:
    codice:
    If oExec.Status=0 Then 'Il processo è ancora in esecuzione => gli aggiornamenti non sono ancora stati installati
        eExec.Terminate()
        'installa gli aggiornamenti
    End if
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Ottima idea... mo ci provo...
    Ti farò sapere se mi hai risparmiato di lavorare domani....

    Grazie GLG

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Ne stavi già parlando qui però...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Ciao MItaly,
    il tuo suggerimento non mi ha risolto il problema, ma comunque mi ha portato sulla buona strada....

    Vedi:
    http://forum.html.it/forum/showthrea...readid=1049438


    Grazie GLG

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.