Oppure

Loading
15/07/09 20:48
hemmaus
Ciao a tutti,

avrei bisogno di un vostro aiuto.
Sto creando una VPN attraverso un repeater.
Ho sviluppato le tre applicazioni (client, server, repeater)

Ora, ho la necessità di intercettare lo stato di un processo.
Il problema, in breve, è che il processo non comunica più con il repeater però funziona, non va in loop. In breve rimane sospeso ma non fuzniona.
Ho notato che quando ciò accade nel Task Manager l'utilizzo della CPU per quel processo è pari a 0. Esiste un modo per intercettare l'utilizzo della CPU del processo?

Infinite grazie a chiunque voglia aiutarmi.
Ciao.
aaa
15/07/09 20:59
theprogrammer
Vorrei risponderti ma, sinceramente, non ho capito quasi nulla del problema ...
aaa
15/07/09 21:56
hemmaus
Mi spiace, cerco di essere più chiaro.

Ho la neccessita di intercettare tramite codice l'utilizzo della CPU di un processo.
In particolar modo quello che in task manager è identificato con 00.
Vedi immagine:


Ho notato che il processo di mio interesse va in utilizzo CPU 00 e non si muove, ne si termina da se. Una volta che ho intercettato la fase di stallo posso terminarlo.

Mi sono spiegato meglio?
Grazie per la tua pronta risposta.:k:
aaa
15/07/09 22:03
theprogrammer
Postato originariamente da hemmaus:
Ho la neccessita di intercettare tramite codice l'utilizzo della CPU di un processo.
In particolar modo quello che in task manager è identificato con 00.
...
Ho notato che il processo di mio interesse va in utilizzo CPU 00 e non si muove, ne si termina da se. Una volta che ho intercettato la fase di stallo posso terminarlo.


Calcolare l'uso istantaneo (in percentuale) della CPU di un processo da parte di un programma VB6, non è affatto semplice. E il fatto che sia a 0, fra l'altro, non significa che il processo non stia facendo nulla.

Quello che vorrei capire, per tentare di seguire una strada diversa, è capire di che processo stai parlando, di cosa succede quando dici che il processo "non si muove" e che non "si terminina da sè". Probabilmente l'errore è nel processo di cui stai parlando e conoscerne i dettagli potrebbe significare trovare una soluzione che evita tutto quello che vorresti fare ...
aaa
15/07/09 22:11
hemmaus
Hai perfettamente ragione, il fatto è che il programma che va in "sospensione" non è mio e non ho il codice.
So solamente che dopo due giorni che gira senza problemi su di un PC (sempre acceso e connesso, PC differenti) si blocca. Basta chiuderlo e riattivarlo perchè si riprenda correttamente.
Di fatto mi occorre solo intercettare quel 00 di task manager.

Grazie
aaa
16/07/09 5:42
theprogrammer
Avendo gli appositi diritti su quel processo (espressi nella documentazione MSDN che segue) puoi aprirlo con la API

GetProcessTimes
msdn.microsoft.com/en-us/library/…(VS.85).aspx

ed ottenere il valore del KernelTime e dell'UserTime.

Dopo aver salvato questi valori, puoi chiamare nuovamente questa API per controllare le variazioni e decidere di conseguenza. Se il processo non e' impegnato, i due valori (soprattutto l'UserTime) non dovrebbero variare tra una chiamata e l'altra.
aaa
16/07/09 14:10
hemmaus
Ti ringrazio ma non gira su VB6.
Ho trovato codice simile per vb6 ci sto lavorando.
Grazie.
:cheer:
Ultima modifica effettuata da hemmaus 16/07/09 14:23
aaa
16/07/09 15:31
theprogrammer
Postato originariamente da hemmaus:

Ti ringrazio ma non gira su VB6.
Ho trovato codice simile per vb6 ci sto lavorando.
Grazie.
:cheer:


Non gira su VB6 cosa ?

Quella e' una API ... va inserita in VB6 in modo opportuno ... e poi gira regolarmente.
aaa