Infos sur les processus

MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 - 8 août 2006 à 12:12
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 - 25 nov. 2008 à 13:43
Bonjour à tous,

voilà je crée une bibliothèque de gestion de processus et j'aimerais proposer des fonctions permettant de récupérer, par exemple, le nom du processus en connaissant son ID.
Actuellement la seule méthode que je connaisse pour faire ça (et que j'utilise en ce moment), c'est de lister tous les process jusqu'à trouver le mien, et alors j'ai accès à ses propriétés dans le type WTS_PROCESS_INFO ou PROCESSENTRY32.

Simplement j'aimerais avoir accès à ces infos sans avoir à lister tous les processus (question de rapidité)... Est ce possible ?
(pour les fenetres y'a plein de fonctions spéciales où il suffit de passer le hwnd en parametre, alors que la il faut à chaque fois lister tous les process...)

Merci d'avance

Ciaò
[mailto:madmatt_12@msn.com MadMatt]
www.madmatt.fr.st

4 réponses

media6 Messages postés 51 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 7 juillet 2010
25 nov. 2008 à 09:17
Bonjour,

tu as trouvé la réponse à ta question ?
Si oui, je suis intéresssé....
J'ai un bout de code qui liste tous les processus ouverts en boucle et qui m'avertit dès qu'il y en a un nouveau ou un qui se ferme. Le problème est le même que le tien puisque je liste tous les processus et c'est trop long.
En plus, j'ai remarqué que les handles utilisés par le prog augmentent à une vitesse ahurissante et finissent par saturer la mémoire.
0
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
25 nov. 2008 à 13:23
Salut,

Concernant les handles, c'est une fuite de mémoire, vérifie que tu ferme bien tous tes handles après chaque utilisation.
Concernant l'autre problème, de mémoire je crois que non ce n'est pas possible (je pense que les processus sont représentés par une liste chainée en mémoire tout simplement). Mais beaucoup de chemin a été fait depuis et je t'invite à aller regarder du coté de la VB System Library (c'est un projet que j'ai fait avec 2 autres programmeurs de vbfrance), elle permet une gestion bien plus simple et bien plus rapide que les API par défaut.
Bref, si tu cherche la meilleure méthode qu'on ai pu trouver en VB elle est utilisée la dedans.

A+
MadMatt
0
media6 Messages postés 51 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 7 juillet 2010
25 nov. 2008 à 13:34
Merci pour la réponse, je vais aller voir cette source qui a l'air très intéressante et étudier tout ça.
Pour ce qui est du problème des handles, j'ai trouvé entre temps. C'est bien ce que tu dis, je ne les fermais pas après chaque utilisation !!
Alors effectivement, avec un timer réglé sur 500 ms et 10 handles à chaque fois, au bout d'1 heure, j'en étais à 72 000 et ça finisait par planter !
Pour ceux qui passeront par là et que ça intéresse :

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

fermer le handle juste après l'utilisation par :
Call CloseHandle(hSnapshot).

Avec ça, le programme reste stable.

A+
0
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
25 nov. 2008 à 13:43
Oui de manière générale dès que tu utilise une API qui te renvoi un handle, il faut toujours faire un CloseHandle.

Sinon tu pourras voir la source de la VbSysLib ici : http://vbsystemlibrary.free.fr/

MadMatt
0
Rejoignez-nous