Taskmanager

Soyez le premier à donner votre avis sur cette source.

Vue 12 458 fois - Téléchargée 990 fois

Description

Explication :
TaskManager est un gestionnaire des tâches comme taskmgr.
Il affiche tous les processus en cours dans une ListView, avec le chemin d'accès, le nombre de threads, l'ID et l'icone de chaque processus.
Il se rafraichit automatiquement et il y a une option pour mettre la fenêtre en TOPMOST (Toujours visible).
Il peut aussi terminer un processus.
Attention, TaskManager peut terminer un processus système critique, comme "csrss.exe". Donc vous pouvez le killer mais à vos risques et périls.

Détails :
- ListView
- Reconnaissance des icones de fichiers en fonction de l'extension(cf. la source de JackosKing : http://www.cppfrance.com/article.aspx?Val=2043)
- Utilisation des Process et des Modules (Merci une fois de plus à BruNews)

A faire :
- Corriger tout d'abord tous les énormes bugs !!!
- Possibilité de réduire l'application dans la barre des tâches (dès qu'il n'y aura plus de bugs).
- Peut-être rajouter d'autres informations comme la mémoire utilisée par un processus, tous les modules associés à ce processus...
- Si vous avez des propositions, n'hésitez pas!

Bugs connus :
- TaskManager provoque des erreurs sur d'autres applications lors de leurs exécutions (au lancement). C'est aléatoire. Par exemple, TaskManager est en exécution, on appelle Microsoft Word, et on a le message d'erreur suivant :

WINWORD.EXE - Erreur d'application
L'application n'a pas réussi à s'initialiser correctement (0xc0000142).
Cliquez sur OK pour arrêter l'application.

Ensuite on appuie sur OK et un autre message d'erreur apparait :

WINWORD.EXE - Erreur d'application
L'instruction à "0x0095746a" emploie l'adresse mémoire "0x0095746a". La mémoire ne peut pas être "read".
Cliquez sur OK pour terminer le programme.

Ensuite on peut rappeller le même programme et ca marche sans problème. Ces messages ne s'affichent pas que pour Word mais aussi pour d'autres applications.

- On a déjà eu un autre type de message d'erreur mais cette fois-ci que pour Windows Messenger. Ce message s'affiche pendant l'exécution de Messenger :

MSMSGS.EXE - Erreur d'application
L'exception Pas à pas
Une exécution en pas à pas ou une trace vient de se terminer.
(0x80000004) s'est produite dans l'application à l'emplacement 0x0013f172.
Cliquez sur OK pour terminer le programme.

- Les 2 derniers bugs se produisent aussi bien en debug qu'en release. Mais ce bug là ne se produit qu'en release : dès qu'on appelle Calc.exe (le calculatrice de Windows), TaskManager plante. Il affiche :

TaskManager.exe a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru.

Et là on a le choix entre "Débogage", "Envoyer le rapport d'erreurs" et "Ne pas envoyer". Par contre, si la Calculatrice est appelé avant TaskManager, il n'y a pas ce problème. Ce bug n'apparaît que pendant l'exécution de TaskManager.

OS/Compilateur :
- testé sur Windows XP
- Compilé sous VC6

Remarques :
- Comme vous l'aurez remarqué, on a beaucoup de bugs qu'on n'arrive pas encore à résoudre. Donc si certains auraient les mêmes erreurs que nous, ou d'autres erreurs dont nous n'avons pas eu le "plaisir de découvrir", ou sinon qu'ils savent d'où viendrait le problème, laissez-nous vos commentaires. Merci d'avance pour votre aide.
- Projet réalisé par Xentor609 et Phoenix72.
- Faites nous part de vos commentaires à phoenix_darkspirit@hotmail.com et/ou xentor_609@hotmail.com

// ********************** MAJ **************************
Corriger :
- Le dernier bug, celui avec la Calculatrice, a été corrigé par BruNews (Merci beaucoup).
- La gestion des imagelist a été amélioré, car l'imagelist gardait toutes les icones (même ceux dont les processus étaient terminés)

Remarques :
- Un style a été rajouté (LVS_EX_FULLROWSELECT) par BruNews (encore merci)
- Les deux autres bugs apparaissent toujours de temps à autre, mais j'ai trouvé à quelle ligne il bloque (du moins pour le 1er bug) : dans GetTaskList(...), à la ligne : hProcessSnapME = CreateToolhelp32Snapshot(TH32CS_SNAPALL,pe32.th32ProcessID);
Il se bloque avec KERNEL32 mais on sait pas du tout pourquoi.
Si quelqu'un saurait comment résoudre cette erreur, laissez-nous vos commentaires.

// ********************** MAJ **************************
Corriger :
- Tous les bugs ont été corrigés.

Amélioration :
- Un menu a été ajouté.
- Possibilité de réduire l'application dans la barre des tâches
- Possibilité d'appeler le programme en mode silence (TaskManager.exe -s)
- Utilisation des mutex pour savoir si l'application a été déjà appelée (cf. la source de Kaid)
- Amélioration de la gestion entre la listview et les process
- Amélioration de la gestion de l'imagelist (merci à Kaid)

Remerciements :
- On remercie BruNews et Anacr0x pour leur aide, sans oublier Kaid pour l'imagelist (cf. le commentaire sur eXPlorer)

Remarques :
- Si quelqu'un aurait le moindre bug à signaler ou un idée à mettre en oeuvre, laissez-nous vos commentaires.
- Projet réalisé par Xentor609 et Phoenix72.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
33
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
19 septembre 2005

moga :
Je vais m'en servir de base pour exactement le contraire :
Vérifier à intervalles de temps réguliers qu'une appli tourne bien, sinon la relancer (C'est un peu long à expliquer je veux bien que le prog à tracer soit fermé, mais pas trop longtemps... on a parfois de drôles de besoins) :)
Messages postés
1
Date d'inscription
mercredi 29 septembre 2004
Statut
Membre
Dernière intervention
29 septembre 2004

Comment distinguer les applications des processus comme le fait le gestionnaire de tâches de windows ?
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
5
Problème de link sous Dev
Messages postés
258
Date d'inscription
jeudi 20 mars 2003
Statut
Membre
Dernière intervention
16 août 2004

Exact ! Tellement évident que je n'ai meme pas pensé !!!
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
Je pense que pour killer un P2p FindWindow devrait suffire.
PostMessage(hwnd, WM_CLOSE, 0, 0); et le tour est joue, non ?
Afficher les 29 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.