CLASSE SUR LES PROCESSUS (ET LEURS MODLES) ==> PERMET D'AVOIR LES INFOS, LISTER,

diablamanshadow Messages postés 419 Date d'inscription lundi 30 août 2004 Statut Membre Dernière intervention 28 janvier 2008 - 11 nov. 2006 à 02:31
frank150 Messages postés 34 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 29 mars 2008 - 29 mars 2008 à 22:29
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/40274-classe-sur-les-processus-et-leurs-modles-permet-d-avoir-les-infos-lister-killer-changer-la-priorite-suspendre

frank150 Messages postés 34 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 29 mars 2008
29 mars 2008 à 22:29
Salut, j'ai tester ton code et sa marche bien.

Mais jai un petit souci:

Si je créé un nouveau projet avec tes 4 classes, dans l'ide je peut lister sans problème mais une fois compilé sa 'bloque' dans la sub EnumerateProcess juste apres avoir énumérer csrss.exe

Quelqu'un a un idée du problème?
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
2 mars 2007 à 18:50
Salut, désolé de ne répondre que maintenant, mais je l'avais fait il y a fort longtemps et a priori la réponse n'est pas apparue ??
Comme je passais ici par hasard, je vois çà...

Enfin bon, je répond quand même 3 mois après...

- pour récupérer l'usage de l'UC, c'est par ici : http://www.vbfrance.com/codes/POURCENTAGE-UTILISATION-CPU-PROCESSUS-ENFIN_38633.aspx

- ta méthode pour détecter les processus planté n'est pas très bonne. 50 signifie 50% d'utilisation du processeur, c'est à dire que le processus mange toutes les ressources (puisque tu dois avoir soit un processeur multi-coeurs, soit un pentium HT avec 2 processeurs logiques). Donc si un programme mange 50% d'UC (un jeu gourmand par exemple), il sera detecté en tant que programme planté.
La meilleure solution est ceci : http://www.vbfrance.com/codes/LISTE-TACHES-COMME-DANS-ONGLET-APPLICATION-GESTIONNAIRE-TACHES_27148.aspx
Il faut utiliser la fonction IsApplicationHung.

@+ et désolé de répondre si tard
larigue34 Messages postés 2 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 12 février 2007
12 févr. 2007 à 18:28
Volient_ken ton code est bon et le programme fonctionne.

Je cherche à choper l'info contenu dans la colonne "Processeur" (pas "temps processeur") du TSKMNGR. J'ai lancé ton programme mais je n'arrive pas a la trouver. Peux-tu m'aiguiller.?

Voici ce que je veux faire dis moi ce que tu en penses.
Il m'arrive d'avoir mon appli qui plante et se retrouve sans fenetre visible (Classique). j'ai remarqué que dans ce cas la colonne processeur indique 50 pour le processus "planté".

Si l'utilisateur relance l'appli je voudrai d'abord killer le processus planté après l'avoir identifié avec cette méthode.

Quelqu'un a t'il une autre idée pour repérer une appli qui a planté. Car pour l'utilisateur mongolien de base c'est pas simple d'aller stoper le process dans le TaskMngr.

Merci
diablamanshadow Messages postés 419 Date d'inscription lundi 30 août 2004 Statut Membre Dernière intervention 28 janvier 2008
22 nov. 2006 à 02:51
si j'ai bien capter le principe ses que le code est lu par le processeur et suivant le travail du processeur on peut alors faire un shema genre

0100100110
_.__._.._.

et en cela donne un resultat qui permet de decrypter la faille a ete decouverte il y a quelque jour par des ingenieur et il devront changer tt les processeur intel par les nouveau et de plus fixer un logiciel dans le "coeur" du processeur pour etablir comme un "mur" pour eviter ces probleme , ces securitee sont utilisee pour tous ce qui es carte bancaire , transaction internet , payement , code de securitee web etc

j'ai regarder sur le web mais ce n'est pas encore publier, c'est passer hier sur le journal de la rtbf ^^ ou avant hier je sais plus mais me semble que c'etais hier
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
21 nov. 2006 à 21:54
Mwao, çà m'a l'air bien tendu comme manipulaton !

Tes potes ont raison, coder si bas niveau est infaisable en VB.

Mais quel(s) rapport(s) entre le processeur avec les protections SSL 128 bits ?

@+
diablamanshadow Messages postés 419 Date d'inscription lundi 30 août 2004 Statut Membre Dernière intervention 28 janvier 2008
21 nov. 2006 à 21:51
non ses bien sniffer le processeur le temp d'attende d'entree et de sortie d'information etc ;-)
mais je me suis renseigner aupres de pote codeur pousser et en vb ses pas fesable comme je voudrais ^^
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
21 nov. 2006 à 20:33
"en ecoutant le processeur" ==> c'est à dire ? Opérations bas niveau = pas possible en VB. Donc accès direct au processeur = mission impossible

"comme du "sniffing" du processeur " ==> Gne ? C'est à dire ? Sniffer un processeur, çà veut dire quoi ?

Est ce que tu confondrais pas processeur et processus ?

@+
diablamanshadow Messages postés 419 Date d'inscription lundi 30 août 2004 Statut Membre Dernière intervention 28 janvier 2008
21 nov. 2006 à 15:14
une faille a ete detectee dazns les processeur intel qui permet de casser les protection SSL 128 bytes juste en ecoutant le processeur donc saurais tu si ses possible en vb de faire comme du "sniffing" du processeur (a but educatif bien sur) car je savais meme pas que c'etais fesable :s et ici j'ai rien trouver sur le sujet ^^
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
20 nov. 2006 à 23:39
De rien ;)

@+ (n'oublie pas de noter si la source te plait ^^) et bonne prog.
poldere Messages postés 69 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 12 août 2007
20 nov. 2006 à 23:33
Merci là ça commence à être complet ici. Merci beaucoup
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
20 nov. 2006 à 23:29
Ok, pas de problèmes, je vais détailler un peu.

Appuie sur Ctrl+Alt+Suppr.
Le gestionnaire des taches s'ouvre (Taskmgr.exe).
Va dans l'onglet Processus, et clique sur le menu "Affichage", "sélection des colonnes", et coche "PID (identificateur de processus)" si c'est pas déjà fait.
Le PID apparaitra ensuite dans la liste des processus dans le gestionnaire des taches.


Le PID est un numéro unique qui désigne un processus en cours d'utilisation.
Pour pouvoir killer un processus, changer sa prioirté, le suspendre...etc, il te faut juste fournir ce numéro (voir tout en abs du message).


Pour voir la liste des processus et leur PID avec ma classe, tu peux ajouter un bouton (Command4) sur la form, et ajouter ce code dans ta form :

Private Sub Command4_Click()
Dim p() As ProcessItem
Dim x As Long
List1.Clear
Text1.Visible = False
MaClasse.EnumerateProcesses p() 'récupère la liste des processus

For x = 0 To MaClasse.ProcessNumber - 1
List1.AddItem "processus " & p(x).szExeFile & " PID " & p(x).th32ProcessID
Next x
Me.Caption = x & " processus"
End Sub



Pour pouvoir killer, suspendre,...etc, regarde ce code, c'est comme cela qu'il faut procéder pour utiliser les actions de la classe :

Private Sub Command5_Click()
Dim x As Long 'contiendra le PID du processus
Dim cls As clsProcess 'cette variable contient la classe sur les processus
Dim k As Double, u As Double, p As Double 'définition des variables dans lesquelles
'seront stockés les temps processeur, temps utilisateur...

Set cls = New clsProcess 'définit la classe

'demande le numéro du PID (sera stocké dans x)
x = Val(InputBox("Travailler avec quel processus ?", "Donnez le PID"))

'cls.SuspendProcess x 'suspend le processus
'cls.ResumeProcess x 'ne suspend plus le processus (resume)
'cls.ChangePriority x, HIGH_PRIORITY 'passe le processus en priorité HAUTE
'cls.GetProcTimes x, k, u, p 'stocke le temps processeur dans la variable p
'cls.TerminateProc x 'kill le processus
End Sub

Pour obtenir 20 infos sur les processus, le code est donné dans Command3_Click.


J'espère que çà t'aidera, @+
poldere Messages postés 69 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 12 août 2007
20 nov. 2006 à 23:09
Effectivement ça fonctionne mieux là. J'ai peut-être l'air encore stupide mais : on trouve ou le numéro du PID pour affiché toutes les infos ?.
J'arrive pas à trouver les options :
-obtenir le temps processeur d'un processus
-killer un processus
-suspendre/reprendre un processus
-vérifier l'existence d'un processus
-obtenir 20 infos sur chaque processus, et 10 sur chaque module
Merci
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
20 nov. 2006 à 22:58
Salut, alors

-pour le bug, c'est
1) je tentais de récupérer le pointeur sur la string rendue par InputBox, alors qu'en fait j'avais convertis la string en Long (avec Val), donc SrtPtr fonctionnait pas.... c'est corrigé
2) que j'avais pas défini avec Set...=... le processus parent du processus 0, c'est corrigé

-pour le PID, c'est l'info th32ProcessID.

Merci pour le commentaire constructif et qui m'a permis de voir un bug, @+
poldere Messages postés 69 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 12 août 2007
20 nov. 2006 à 22:39
Léger petit bug quand je fais " AFFICHER LES PROCESSUS " puis " TOUTES LES INFOS " puis " CANCEL " = bug ici dans
Private Sub Command3_Click()
s = s & "procParentProcess=" & p.procParentProcess.szExeFile & "=[" & p.procParentProcess.th32ProcessID & "]" & vbNewLine
Et autre chose; on trouve ou le PID ?
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
12 nov. 2006 à 13:06
V'la une grosse MAJ.
@+
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
11 nov. 2006 à 09:56
Salut, un module de processus est un fichier chargé par le processus. Ce sont généralement des fichiers *.dll, .ocx, *sys...

@+
diablamanshadow Messages postés 419 Date d'inscription lundi 30 août 2004 Statut Membre Dernière intervention 28 janvier 2008
11 nov. 2006 à 02:31
comme quoi les codeur dorme jamais ^^'
j'ai pas encore looker le code au vu qu'il est tard et que demain je lan ^^ mais je ne comprend pas se que tu entend par module de procesus :s je vois le pid , le nom , la path enfin tout mais je comprend pas se que tu entend par un module de processus :s
Rejoignez-nous