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

    controllo di un processo nel task di windows

    Sapete dirmi qual è il comando per vedere se sul task di windows è stato avviato un processo e inibire qualsiasi altro comando finchè questo processo non si è del tutto caricato?

    In pratica io ho creato un eseguibile che deve partire in esecuzione automatica di windows, ma solo dopo che il sistema operativo ha finito di caricare il driver di una scheda, altrimenti il programma mi restituisce errore.

    Consigli?

    Giuseppe

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,322
    Con quale linguaggio?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,468
    Ma tu hai il codice sorgente del programma in questione o no?

  4. #4
    avete ragione... scusate... ho dimenticato di indicarlo nel titolo, perdonatemi.
    il linguaggio è il C++.
    Ovviamente il codice sorgente ce l'ho, è quello che dovrei modificare a mio piacimento, uso e consumo
    per ora ho risolto con uno sleep(70000), ma è una soluzione empirica che non mi piace...

  5. #5
    Il processo è avviato dal tuo programma?
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    no, il processo (il caricamento del driver della scheda intendo) si avvia in esecuzione automatica, anche se volendo potrei inserirlo all'interno del mio eseguibile...
    qual'è la tua idea? :master:

  7. #7
    Il fatto è che se lo avvia il tuo programma hai già l'handle del processo da attendere (ottenuto tramite CreateProcess), per cui la faccenda si semplifica di molto. Supponendo che l'handle del processo sia memorizzato nella variabile hProcess per attendere che il processo sia partito correttamente (in sostanza attende che la sua coda di messaggi sia vuota, condizione che indica di solito che il programma ha terminato l'inizializzazione):
    codice:
    WaitForInputIdle(hProcess,INFINITE);
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Io ho provato ad avviarlo con il comando WinExec("percorso") e non con createprocess, è uguale?
    comunque per me è di fondamentale importanza sapere non quando il processo è avviato ma quando il suo avvio si è concluso... intendi questo per "attende che la sua coda di messaggi sia vuota"?
    grazie

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 © 2024 vBulletin Solutions, Inc. All rights reserved.