CLASSE SUR LES PROCESSUS (ET LEURS MODLES) ==> PERMET D'AVOIR LES INFOS, LISTER,
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008
-
11 nov. 2006 à 02:31
frank150
Messages postés34Date d'inscriptionlundi 6 janvier 2003StatutMembreDernière intervention29 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.
frank150
Messages postés34Date d'inscriptionlundi 6 janvier 2003StatutMembreDernière intervention29 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és1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 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 çà...
- 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és2Date d'inscriptionmercredi 12 novembre 2003StatutMembreDernière intervention12 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és419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 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és1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 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és419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 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és1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 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és419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 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és1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 20 nov. 2006 à 23:39
De rien ;)
@+ (n'oublie pas de noter si la source te plait ^^) et bonne prog.
poldere
Messages postés69Date d'inscriptionsamedi 14 mai 2005StatutMembreDernière intervention12 août 2007 20 nov. 2006 à 23:33
Merci là ça commence à être complet ici. Merci beaucoup
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 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és69Date d'inscriptionsamedi 14 mai 2005StatutMembreDernière intervention12 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és1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 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és69Date d'inscriptionsamedi 14 mai 2005StatutMembreDernière intervention12 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és1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 12 nov. 2006 à 13:06
V'la une grosse MAJ.
@+
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 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és419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 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
29 mars 2008 à 22:29
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?
2 mars 2007 à 18:50
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
12 févr. 2007 à 18:28
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
22 nov. 2006 à 02:51
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
21 nov. 2006 à 21:54
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 ?
@+
21 nov. 2006 à 21:51
mais je me suis renseigner aupres de pote codeur pousser et en vb ses pas fesable comme je voudrais ^^
21 nov. 2006 à 20:33
"comme du "sniffing" du processeur " ==> Gne ? C'est à dire ? Sniffer un processeur, çà veut dire quoi ?
Est ce que tu confondrais pas processeur et processus ?
@+
21 nov. 2006 à 15:14
20 nov. 2006 à 23:39
@+ (n'oublie pas de noter si la source te plait ^^) et bonne prog.
20 nov. 2006 à 23:33
20 nov. 2006 à 23:29
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, @+
20 nov. 2006 à 23:09
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
20 nov. 2006 à 22:58
-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, @+
20 nov. 2006 à 22:39
Private Sub Command3_Click()
s = s & "procParentProcess=" & p.procParentProcess.szExeFile & "=[" & p.procParentProcess.th32ProcessID & "]" & vbNewLine
Et autre chose; on trouve ou le PID ?
12 nov. 2006 à 13:06
@+
11 nov. 2006 à 09:56
@+
11 nov. 2006 à 02:31
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