TASKMANAGER

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 6 août 2003 à 14:36
_Thy_ Messages postés 33 Date d'inscription mardi 24 août 2004 Statut Membre Dernière intervention 19 septembre 2005 - 2 mars 2005 à 15:22
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/11208-taskmanager

_Thy_ Messages postés 33 Date d'inscription mardi 24 août 2004 Statut Membre Dernière intervention 19 septembre 2005
2 mars 2005 à 15:22
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) :)
Forest44 Messages postés 1 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 29 septembre 2004
29 sept. 2004 à 14:26
Comment distinguer les applications des processus comme le fait le gestionnaire de tâches de windows ?
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
16 août 2004 à 17:24
Problème de link sous Dev
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004
11 juin 2004 à 11:14
Exact ! Tellement évident que je n'ai meme pas pensé !!!
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 juin 2004 à 19:20
Je pense que pour killer un P2p FindWindow devrait suffire.
PostMessage(hwnd, WM_CLOSE, 0, 0); et le tour est joue, non ?
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004
9 juin 2004 à 19:05
Salut moga!
Pour pouvoir killer, il suffit de lister les processus, en fonction du nom du processus ou du chemin d'accès tu auras son ID et ensuite tu le kill. Tu peux retrouver l'utilisation de ces fonctions dans GetTaskList(...) et KillProcess(...). Le code n'est pas très compliqué : tu reprends à peu près la même chose que GetTaskList :

DWORD GetTaskList(void)
[...]
if(pe32.th32ProcessID)
{
if(strcmp(pe32.szExeFile,"emule.exe")==0)
{
HANDLE hProcess=OpenProcess(PROCESS_TERMINATE,0,pe32.th32ProcessID);
if(hProcess)
{
TerminateProcess(hProcess,1);
CloseHandle(hProcess);
}
}
}
[...]

Voilà, le code devrait ressembler à çà, à quelques erreurs près (je n'ai pas du tout compilé ou essayer donc aucune garantie). Et pour l'appel de cet fonction tu utilises soit un sleep ou de préférance un timer, enfin à toi de voir. Je te souhaite bonne chance.
Bye,Xentor609!
cs_moga Messages postés 1 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 9 avril 2004
9 avril 2004 à 20:21
Alors tout simplement bravo;
voila qlq temps deja que je cherche un code reprenant la gestion de processus; mais alors carrement un taskmanager je suis comblé...

Je te remercie du fond du coeur pour cette source ;p
Seul souci je suis debutant ca va etre chaud de tout comprendre eheh

enfin bon coté idée j'en une pitite : ce serai de pouvoir checker automatiquement a intervale regulier qu'un processus (ou meme une liste) ne soit pas en route et de pouvoir le killer automatiquement...

Bon j avoue tout je cherche en fait a faire un prog pour buter la mule, et autre p2p que mon frangin met en route intepestivement et qui bouffent la bande passante de tout le monde.
Seulement il faut pas qu il s en rende trop compte sinon ca va bouder je prefere qu il croit simplement que son prog marche pas des masses

Bon encore merci ++
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004
19 août 2003 à 19:25
L'idee est bonne. Je pourrais bien en faire ma MAJ, ca serait vraiment intéressant. Pour le moment, je suis occupe par d'autres projets, mais des que j'ai un temps, je m'en occuperais. C'est promis!
Merci encore pour l'idée!
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
19 août 2003 à 15:28
juste une petite idée comme ca, tu pourait rajouté un systeme pour arrété un process par ligne de commande. Ca permettrait de pouvoir faire un petit raccourci qui ferme automatiquement un (ou plusieur process) en meme tps (du genre TaskManager.exe -WINWORD.exe)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 août 2003 à 22:09
NICKEL !!! A utiliser sans moderation.
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
18 août 2003 à 22:00
dsl, jsui 2 de tens, la source a déja été mise a jour (^_^)
Aucun pb ds la nouvelle version, bravo
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
18 août 2003 à 21:28
aucun pb, envoi sur Anacr0x@yahoo.fr si tu veu
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2003 à 13:04
Poste quand tu veux.
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004
17 août 2003 à 12:58
salut!
Tout d'abord merci pour vos commentaires!
Dès le départ, j'ai pensé que le rafraichissement automatique à 1 seconde réglerait le problème mais ca ne changait rien. J'ai même essayé de mettre des Sleep un peu partout mais sans résultat.
J'ai essayé toutes vos propositions, mais une fois de plus, le problème reste toujours présent.
Mais j'ai modifié le code, et ça a l'air de marcher sans problème.
Je voudrais avant de poster sur CPPFrance, vous envoyer le programme (enfin si vous êtes d'accord bien sûr), afin d'avoir votre avis et aussi savoir si le programme fonctionne sans problème chez vous ! D'avance merci.
Xentor609
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
17 août 2003 à 01:16
Bon ben g reussi a tt threadé mais rien a faire ca ne marche pas commen je le veu... Pourtant je suis presk sur qu'en réduisant la vitesse du rafraichissement automatik a 1 seconde on gagne et en ressource et en stabilité... A vrai dire, tu conné et compren mieu ton code que moi donc je vais te laissé le faire, t'aura ptet plus de chance (et pi c ton programme après tt (^_^) )
Si t'as un quelconque problème, n'hésite pas a demandé (on sé jamais, jpourré peut-etre connaitre la réponse...)

BruNews, je croi ke tu as raison, la chaleur m'atteint sérieusement, j'arrive a rien en ce moment ;) Et pi en plus, j'ai mem pas encore commencé a testé le sous-classement, fodré ke jmy mette quand j'auré plus de tps
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 août 2003 à 21:38
typedef struct _TOTHREAD {
HWND h1;
HWND h2;
long l1;
long l2;
} TOTHREAD, *LPTOTHREAD;

TOTHREAD tothrd;
initialise les membres quand besoin;
decalare ta func de thread normal ou (idem):
DWORD WINAPI MonThread(LPTOTHREAD pparm);
Appel de CreateThread ne change pas.
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
16 août 2003 à 21:26
Dsl Xentor, mé je croi ke mon aide va s'arrété la, g trop de mal avec les structures et malgré mes efforts, ya plin d'erreur de compilation, peut etre est tu plus doué que moi la dessus... De plus, j'ai des doutes quands au résultats.. Enfin, si tu veu, je peut te montré ce ke j'ai fé (ca te sera sans doute pas trè utile)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 août 2003 à 20:07
Anacr0x, on passe 200000000000 args a un thread si on veut. Je ne suis pas le seul victime de la chaleur. Un pointeur sur une structure et voila le prob du nbr de params resolu.
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
16 août 2003 à 14:41
Bon, je clarifie un peu mes pensée... Ce qu'il y a d'étonant dans ton programme, c'est qu'il fait planté les autres, et pas le tiens, j'en déduis donc qu'ils essayent d'écrire dans une partie que tu est en train de lire ou écrire et ca bloque (je peut me gourré aussi), donc en mettant une temporisation dans ta boucle ProcessListView au bon endroit peut etre que ca marchera... Le probleme c'est qu'une temporisation entrainera un problème d'afichage, il faut donc en faire un thread, g modifié tt ca mais j'en suis arrivé a un autre problème, comment passé deux argument a un thread (je ne sais en mettre qu'un) ? Si vous croyez que je me trompe totalement, dite le moi tt de suite, ca m'évitera de cherché pour rien (^_^)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 août 2003 à 12:09
Salut les obsedes du codage (hi hi hi...),
5 jours de campagne m'ont engourdi les neurones.
J'oubliais un truc que je voulais te dire Xentor609, les list(View) prennent un lParam en 32 bits pour stocker une valeur par item. Ne serait pas mieux que de reconvertir la valeur litterale comme est fait dans GetListItemTextId() ?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 août 2003 à 11:59
Je pense juste avant ceci:
hProcessSnapME = CreateToolhelp32Snapshot(...)
seulement si est une nouvelle tache.
Vitesse de rafaichissement a 1 seconde ne suffirait pas ?
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004
16 août 2003 à 11:51
Est-ce que tu pourrais préciser ton idée ? Mettre une tempo, ok mais où? D'avance merci.
Xentor609
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
12 août 2003 à 19:08
Excuse moi, mais tu as raison, j'ai fait 2 autres test, la premiere fois, il a quand meme falu que j'ouvre plus de 15 logiciel en meme tps, et la deuxieme seulement 5. Je pense qu'il s'agit de la fonction de rafraichissement automatique qui bug (je n'ai pas encore regardé le code, mais peut etre qu'en métant une temporisation...)
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004
12 août 2003 à 16:38
salut Anacr0x!
Tout d'abord, merci de m'avoir répondu! Je commençais à désespèrer!
Pour les bugs, c'est aléatoire, donc ca peut se produire n'importe quand avec n'importe quel programme (j'en ai déjà eu avec Windows Media Player et pleins d'autres).
Ce que je fais pour tester, j'appelle TaskManager, je le réduis, j'appelle pleins de programmes et généralement, j'ai le message d'erreur.
J'ai testé ce programme sur pas mal de machines (pour voir si les bugs n'apparaissaient que sur mon ordi) et sur tous les PC testés, le bug est apparu.
A première vue, tu serais le "seul" (peut-être d'autres n'ont pas ces bugs là, mais à part toi, je n'en connais pas) avec qui le programme fonctionne sans problème.
En ce qui concerne le conflit logiciel, je pense pas que le problème vient de là, mais c'est possible.
Est-ce que tu pourrais réessayer le programme pour confirmer qu'il marche sans problème chez toi? D'avance merci.
Xentor609
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
11 août 2003 à 22:45
trè bon programme (qui plus est très pratique) ! de plus, chez moi, aucun bug a signaler, que ce soit avec word (contrairement a ce ke tu dit au dessus) ou n'importe quel autres logiciels... peut etr a tu un conflit logiciel ?
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004
8 août 2003 à 08:54
En ce qui concerne le style (LVS_EX_FULLROWSELECT), il y a un petit détail qui me gene : il y a un espace vide à la fin de la listview. Est-ce qu'il y aurait un moyen de l'enlever ?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 août 2003 à 19:02
int VerWindowsNT()
{
OSVERSIONINFO osvi;
osvi.dwPlatformId = 0; // unique membre qui nous interesse ici
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
return (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT);
}

et remplace aussi comme cela qui est bien suffisant si on a juste besoin de savoir type NT ou non.
cs_Xentor609 Messages postés 258 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 16 août 2004
6 août 2003 à 18:34
Salut,
pour ce qui est des "string", tu as tout a fait raison, mais ca c'est juste une question de "facilité",et que je suis en ce moment occupe sur un autre projet. Mais je compte bien faire une MAJ avec corrections de certains bugs et elimination de string au profit des bons vieux "char".
Pour l'alloc sur temp, c'est juste un oubli, merci de l'avoir remarque.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 août 2003 à 14:36
#include <string>
using namespace std;
T'avais vraiment besoin de ces horreurs ?
Dans AddProcessList(...) tu fais 4 allocs sur temp, quand tu liberes ?
Pour l'instant j'en suis la, je nettoie tout cela, reste a suivre.
Rejoignez-nous