[C/WIN32] CTRLALTDEL : UN GESTIONNAIRE DE PROCESSUS.

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 3 juin 2006 à 17:55
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 30 mars 2008 à 13:03
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/37923-c-win32-ctrlaltdel-un-gestionnaire-de-processus

deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
30 mars 2008 à 13:03
HeavenForsaker , maintenant je crois que tu as ta solution :D pour ma par je modifierai bien mon code en suivant la méthode de celui de brunews, mais je ne suis pas à ça pour le moment. Je le ferais quand j'aurai le temps :D mais je note
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 mars 2008 à 18:38
Je vais mettre une "V2" de mon code 17658 en x64, j'ai viré Vista32 pour Server 2008 x64 mais ça liste bien en version 32.
HeavenForsaker Messages postés 223 Date d'inscription mercredi 13 juillet 2005 Statut Membre Dernière intervention 8 août 2011
28 mars 2008 à 19:23
re,

J'ajoute que la fonction CreateToolhelp32Snapshot échoue aussi sur ce processus :
haModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessId);

Toujours avec access denied.
HeavenForsaker Messages postés 223 Date d'inscription mercredi 13 juillet 2005 Statut Membre Dernière intervention 8 août 2011
28 mars 2008 à 17:53
Bonjour,

Sous Vista ton prog n'arrive pas a lister le path du processus audiodg.exe (Isolation graphique de périphérique audio Windows), le programme est exécuté en "run as administrator".

OpenProcess échoue sur ce processus :
haProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,stProcess.th32ProcessID);

GetLastError() renvoi 5 (access denied)

Je pensais qu'avec le privilège debug on était à l'abris de ça mais visiblement ça n'est pas le cas, as tu une solution ?
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
3 mars 2008 à 21:17
Yop,

Neo et Thez, merci je vai corrigé cela sous peu.
cs_Thez Messages postés 21 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 12 mars 2009
3 mars 2008 à 10:05
Bonjour,

Je voudrais te signaler qu'il y a une fuite mémoire dans GetUserProcess():
- si cela se passe mal, tu fais bien un CloseHandle, mais tu ne
désalloue pas la mémoire !

Je te propose de repousser tes allocations au plus tard. Ainsi tu n'as pas besoin de désallouer dans tous les cas où tu retournes FALSE.

En tout cas, très bon code.
Bonne continuation
cs_NeoUmbrella Messages postés 104 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 11 septembre 2008
10 févr. 2008 à 11:51
Salut, intéressant comme code source.
Je me trompe peut-etre mais je crois que tu oublies de nettoyer dans tes fonctions LoadProcess et StopProcess ( au cas ou le processus ne serait pas trouvé ).
Faudrait faire un CloseHandle sur haSnapShot.
Sinon merci pour ce code source.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 déc. 2007 à 09:58
Il est clair que:
if(debutant || userApiExist) userApiUtiliser();
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 déc. 2007 à 08:54
Yop,

ZwQuerySystemInformation n'est pas une fonction du DDK ? tu m'avais dit que ce n'était pas très bon de jouer avec des fonctions du DDK dans une application normale.

Sinon pour les threads, c'est vrai que ce n'est pas une mauvaise idée. Je le rajouterai quand j'aurais le temps.
shuttleur Messages postés 33 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 30 juin 2008
13 déc. 2007 à 16:08
Merci !

J'avais entre-temps essayé avec :
HANDLE hSnapshot = (HANDLE) CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
et
Process32Next(hSnapshot, &uProcess);

mais bizarrement, uProcess.cntThreads me renvoit un nombre différent de celui du taskmng de windows, et surtout constant dans le temps alors que le nombre de threads changeait dans le gestionnaire de taches de windows..

Je me lance avec ZwQuerySystemInformation
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 déc. 2007 à 15:16
ZwQuerySystemInformation()
avec SystemProcessesAndThreadsInformation

exemple d'utilisation ici:
http://www.cppfrance.com/code.aspx?id=17658
shuttleur Messages postés 33 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 30 juin 2008
13 déc. 2007 à 14:56
Salut à tous,

Je scrupte depuis hier les sources de simili-Gestionnaires de Taches, mais je n'arrive pas à trouver comment je peux connaître le nombre de threads d'un processus.

Sauriez vous comment faire ?
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
30 juin 2006 à 16:43
Merci . C'est normale car il n'est pas fait :D lol
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
30 juin 2006 à 01:07
Salut,
Ta source est super intéressante. Je te remercie.

Une note : chez moi le tri des colones ne foncionne pas (si on entend par là le fait qu'en cliquant sur la colone de la mémoire par exemple ça se reclasse par ordre croissant).

Je suivrai l'évolution ;)


eRoZion
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
23 juin 2006 à 11:41
Il n'y a que "system" qui n'en à pas , je n'en connai la raison. pource qui est de \?? je ne sais pas non plus. Je ne sais pas l'expliquer.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
22 juin 2006 à 21:25
C'est marrant certains processus on comme chemin \??\C:\, ou \SystemRoot
D'autres processus n'ont pas de chemin du tout :)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 juin 2006 à 19:43
CloseHandle suffit, c'est juste pour dire au système de libérer cette place dans la table des handles mais ce n'est pas de la la "mémoire" à libérer.
Si haProcess == NULL bien entendu que pas de CloseHandle.
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
20 juin 2006 à 14:44
Ok BruNews , je modifie et je met à jour. Une question cependant, au risque de paraître idio, comment libéré la mémoire allouée pour le handle? car je ne sais qu'elle fonction ou autre à été employée.

Merci pour l'encouragement :D
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 juin 2006 à 02:22
InitCommonControls(); ne doit pas être appelé à chaque event de ta windProc, place le juste avant le CreateWindowEx dans le WinMain, sera impec à cet endroit.

if(haProcess == NULL){CloseHandle(haProcess); return FALSE;}
On ne ferme pas un handle invalide mais par contre il faut libérer la mémoire allouée plus haut.
Vérifie tous les cas de sortie de cette fonction, il ne faut rien oublier, c'est le cas typique ou qlq 'goto' judicieux ne gache rien à l'affaire.

Bon travail, continue ainsi.
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 juin 2006 à 20:11
ha oui, bon à savoir ça merci vecchio et brunews.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 juin 2006 à 20:08
Ben non, c'est dans les headers (commctrl.h ici)
Mais celui de MinGW est en carton
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 juin 2006 à 20:07
hey ça marche avec 0x1000+54, intéressant, et comme on fait pour savoir à quoi correspond la constante? c'est dans la lib???
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 juin 2006 à 20:05
mdr je vai tester avec 0x1000+54 :D
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 juin 2006 à 20:05
tu vas me tué hein ? si je te dit que LVM_SETEXTENDEDLISTVIEWSTYLE et bien il met qu'il n'est pas connu :s aiieeeee nooooon . Donc tjrs le même problème.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 juin 2006 à 20:03
Autant le dire de suite, LVM_SETEXTENDEDLISTVIEWSTYLE=0x1000+54
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 juin 2006 à 20:01
Non ca risque pas de venir de la DLL...
Pour VisualC++ express, tu peux télécharger une image:
http://download.microsoft.com/download/7/6/0/760bd72d-bef3-4e0f-bdfb-1024ad5b005b/vc.iso
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 juin 2006 à 20:01
pas besoin:
SendMessage(hlv, LVM_SETEXTENDEDLISTVIEWSTYLE, 0x20, 0x20);
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 juin 2006 à 19:58
Lol ça progress, maintenant c'est la fonction SetExtendedListViewStyleEx() qui n'est pas connue, je commence à croire que j'ai pas la bonne version de la dll.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 juin 2006 à 19:54
0x20 au lieu de la contante
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 juin 2006 à 19:48
Ho tien voila BruNews, oui ... ce serai une solution :D . Met il n'est installable que via le net et le pc ou je programme n'y est pas raccordé, j'ai bien des cd avec des versions express mais pas VC++ :s , donc voila. Mais sinon , il doit y avoir moyen mm avec dev-cpp de pouvoir appliqués les styles étendu hein :D allons mdr.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 juin 2006 à 19:42
Installe VC++ Express 2005 + le SDK et finies les emmerdes des machins rustiques.
Pour faire du code Win, les produits MS me semblent les mieux adaptés.
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 juin 2006 à 19:34
oui cela aussi je l'ai fait, cela ne change absolument rien :s
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 juin 2006 à 19:31
Tu mets ca au début de ton programme:
#define _WIN32_WINNT 0x501
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 juin 2006 à 19:22
Oui vecchio j'ai déjà esseyer mais il me dit que LVS_EX_FULLROWSELECT est introuvable, lol je suis plutot impuisant face à ce problème. (je met a jours ma source de suite pour la correction du bug).
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 juin 2006 à 19:17
Voila le problème règlé en ce qui concerne les processus à plusieur noms, je me demande d'ailleur pourquoi je n'ai pas fait comme cela directement :s . Merci vecchio de te soucié de mon prog mdr.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 juin 2006 à 19:10
Les styles étendus sont a ajouter après la création:
ListView_SetExtendedListViewStyleEx(hListView, 0, LVS_EX_FULLROWSELECT);
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 juin 2006 à 19:08
xp pro SP2 , désolé pour l'étourderie :D
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
14 juin 2006 à 19:07
vecchio , oui je sais, mais je n'y arrive pas, j'ai pourtant la bonne version de Comctl32.dll, enfin je pense vu que je suis sous win pro SP2. Ok merci pour la remarque, je vais plutot faire la recherche par les ID que les noms.

Pour ce qui est des noms, la méthode donnée est bonne, mais limitée, car on récupère les proprités de sécurité grâce au chemin de l'exe, hors il y en a certain qui n'en on pas :s et donc la je suis bloqué.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 juin 2006 à 18:14
Ah, et puis petite remarque, il y a un problème quand plusieurs processus ont le même nom d'exécutable. Stop ne termine pas forcément le bon
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 juin 2006 à 18:08
Une ListView avec LVS_EX_FULLROWSELECT serait plus pratique a utiliser
A ce que je vois tu n'a pas réussi a trouver le nom d'utilisateur qui a lancé le processus.
Tu devrais peut être retenter le coup dans le forum maintenant que BruNews est la...
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
6 juin 2006 à 20:21
héhé vecchio je verai après mais exams mdr. mais je le ferai.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
6 juin 2006 à 18:51
Eh ben, on peut toujours pas trier les colonnes?
Tu devrais essayer de la faire
militaire75 Messages postés 2 Date d'inscription samedi 10 avril 2004 Statut Membre Dernière intervention 3 juin 2006
3 juin 2006 à 20:42
C'est très bien et pratique. Juste un détails, dans la fonction LoadProcess, la taille de szBuffer est un peu petite, ça me faisait planter le programme, j'ai mis 64 à la place de 20
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
3 juin 2006 à 18:08
Non effectivement moi j'utilise ToolHelp lui ... ben lui il va a la source, il recode tout :D Dans quelque année l'OS Brudows sortira mdr.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 juin 2006 à 18:05
Ya pas de problème, c'était jsute pour signaler aux personnes intéressées par le sujet qu'il y avait d'autres trucs sur le sujet
Ta méthode n'est pas la même que celle de BruNews de toute facons
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
3 juin 2006 à 18:02
ha désoler j'avai pas vu. J'avai fait une recherche avant et j'était bien tomber sur une source en rapport mais c'était stoper un processus et en mode console en plus. Etant donné que tu es admin il ne tien qu'à toi de supprimé ma source. Mais p-e (surement) que cette source est plus facile à comprendre que celle de BruNews qui s'adresse à des gens qui comprennent l'asm mdr. Enfin voila, a toi de juger.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 juin 2006 à 17:55
Rejoignez-nous