Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

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


Information sur la source

Catégorie :API Classé sous : processus, api, gestion, executer Niveau : Débutant Date de création : 03/06/2006 Date de mise à jour : 24/06/2006 15:22:32 Vu / téléchargé: 5 557 / 939

Note :
10 / 10 - par 4 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (47)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Yop à tous ,

Voila un mini ctrl + alt + del lol.

Qu'est ce qu'on y trouve? :

- Affichage des processus et des propriétés.
- Stopper un processus.
- Executer un processus (avec prise en charge des arguments).
- Changer les prioritées.
 

Source

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • ctrlaltdel.devTélécharger ce fichier [Réservé aux membres club]1 001 octets
  • ctrlaltdel.ex_Télécharger ce fichier [Réservé aux membres club]48 702 octets
  • ctrlaltdel.layoutTélécharger ce fichier [Réservé aux membres club]115 octets
  • main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier40 837 octets
  • main.cpp.bakTélécharger ce fichier [Réservé aux membres club]21 026 octets
  • main.oTélécharger ce fichier [Réservé aux membres club]20 830 octets
  • main2.cpp.bakTélécharger ce fichier [Réservé aux membres club]24 002 octets
  • main3.cpp.bakTélécharger ce fichier [Réservé aux membres club]35 740 octets
  • Makefile.winTélécharger ce fichier [Réservé aux membres club]925 octets

Télécharger le zip

Historique

06 juin 2006 14:22:32 :
- Modification apportée : la liste des processus ce trouve maintenant dans une ListView. Pour des sourci de compréhension de la manière dont on traite les processus, j'ai laissé l'ancien code (celui avec la listebox) dans le zip. Plus simple a comprendre.
08 juin 2006 20:15:18 :
- Maintenant on peut voir le chemin complet (si il y en a un) du processus.
14 juin 2006 17:37:31 :
- Maintenant mon programme affiche la priorité des processus, avec possibilité de les modifier.
14 juin 2006 19:25:15 :
- Correction du bug en ce qui concerne les processus ayant le même nom. La recherche ne se fait plus part nom, mais par l'id. Merci vecchio ;)
14 juin 2006 20:17:24 :
- Mise à jour de l'estétique du programme, maintenant on peut selectionner le processus depuis n'importe quel colone.
15 juin 2006 17:39:13 :
- Le chemins de TOUS les processus sont désormai accessible. Ajout des droits de debug.
17 juin 2006 16:23:40 :
- Après beaucoup de recherches et de prises de tête, mon programme affiche maintenant l'utilisateur de chaque processus (ou le domaine).
18 juin 2006 09:27:32 :
- Ajout de la même petite option du task manager , a savoir, afficher seulement les processus de l'utilisateur courrant.
20 juin 2006 17:26:05 :
- Ajout de l'état de la RAM . Une autre mise à jour va bientot venir en prenant en compte les dires de BruNews, cependant la fonction InitCommonControles() à été déplacée.
21 juin 2006 14:04:06 :
- ATTENTION ! correction d'un bug très important, en effet WM_TIMER faisait complètement planter le programme (plus possible de stoper un processus n'y d'en changer les propriétées) . J'ai corrigé ce bug et créant une procédure pour le timer (TIMERPROC). Par contre je ne sais absolument pas pourquoi cela infectai le bon déroulement de mon programme. Si quelqu'un a une idée.
22 juin 2006 19:47:34 :
- Bo simple ajout des icones des différents processus et du nombre de mo de DDR :D .
24 juin 2006 15:22:32 :
- Ajout de l'utilisation mémoire de chaque processus.

Commentaires et avis

signaler à un administrateur
Commentaire de vecchio56 le 03/06/2006 17:55:23 administrateur CS

Sources en rapport:
http://www.cppfrance.com/codes/LISTE-PROCESSUS-API-NATIVE-WIN32_17658.aspx
http://www.cppfrance.com/codes/ENUMERATION-PROCESSUS-DECHARGEMENT-FORCE-DLL_30494.aspx

signaler à un administrateur
Commentaire de deck_bsd le 03/06/2006 18:02:16

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.

signaler à un administrateur
Commentaire de vecchio56 le 03/06/2006 18:05:07 administrateur CS

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

signaler à un administrateur
Commentaire de deck_bsd le 03/06/2006 18:08:01

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.

signaler à un administrateur
Commentaire de militaire75 le 03/06/2006 20:42:20

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

signaler à un administrateur
Commentaire de vecchio56 le 06/06/2006 18:51:09 administrateur CS

Eh ben, on peut toujours pas trier les colonnes?
Tu devrais essayer de la faire

signaler à un administrateur
Commentaire de deck_bsd le 06/06/2006 20:21:51

héhé vecchio je verai après mais exams mdr. mais je le ferai.

signaler à un administrateur
Commentaire de vecchio56 le 14/06/2006 18:08:17 administrateur CS

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...

signaler à un administrateur
Commentaire de vecchio56 le 14/06/2006 18:14:36 administrateur CS

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

signaler à un administrateur
Commentaire de deck_bsd le 14/06/2006 19:07:39

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é.

signaler à un administrateur
Commentaire de deck_bsd le 14/06/2006 19:08:19

xp pro SP2 , désolé pour l'étourderie :D

signaler à un administrateur
Commentaire de vecchio56 le 14/06/2006 19:10:33 administrateur CS

Les styles étendus sont a ajouter après la création:
ListView_SetExtendedListViewStyleEx(hListView, 0, LVS_EX_FULLROWSELECT);

signaler à un administrateur
Commentaire de deck_bsd le 14/06/2006 19:17:03

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.

signaler à un administrateur
Commentaire de deck_bsd le 14/06/2006 19:22:03

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).

signaler à un administrateur
Commentaire de vecchio56 le 14/06/2006 19:31:54 administrateur CS

Tu mets ca au début de ton programme:
#define _WIN32_WINNT 0x501

signaler à un administrateur
Commentaire de deck_bsd le 14/06/2006 19:34:46

oui cela aussi je l'ai fait, cela ne change absolument rien :s

signaler à un administrateur
Commentaire de BruNews le 14/06/2006 19:42:23 administrateur CS

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.

signaler à un administrateur
Commentaire de deck_bsd le 14/06/2006 19:48:22

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.

signaler à un administrateur
Commentaire de BruNews le 14/06/2006 19:54:53 administrateur CS

0x20 au lieu de la contante

signaler à un administrateur
Commentaire de deck_bsd le 14/06/2006 19:58:12

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.

signaler à un administrateur
Commentaire de BruNews le 14/06/2006 20:01:00 administrateur CS

pas besoin:
SendMessage(hlv, LVM_SETEXTENDEDLISTVIEWSTYLE, 0x20, 0x20);

signaler à un administrateur
Commentaire de vecchio56 le 14/06/2006 20:01:11 administrateur CS

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

signaler à un administrateur
Commentaire de vecchio56 le 14/06/2006 20:03:59 administrateur CS

Autant le dire de suite, LVM_SETEXTENDEDLISTVIEWSTYLE=0x1000+54

signaler à un administrateur
Commentaire de deck_bsd le 14/06/2006 20:05:11

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.

signaler à un administrateur
Commentaire de deck_bsd le 14/06/2006 20:05:53

mdr je vai tester avec 0x1000+54 :D

signaler à un administrateur
Commentaire de deck_bsd le 14/06/2006 20:07:09

hey ça marche avec 0x1000+54, intéressant, et comme on fait pour savoir à quoi correspond la constante? c'est dans la lib???

signaler à un administrateur
Commentaire de vecchio56 le 14/06/2006 20:08:21 administrateur CS

Ben non, c'est dans les headers (commctrl.h ici)
Mais celui de MinGW est en carton

signaler à un administrateur
Commentaire de deck_bsd le 14/06/2006 20:11:51

ha oui, bon à savoir ça merci vecchio et brunews.

signaler à un administrateur
Commentaire de BruNews le 20/06/2006 02:22:28 administrateur CS

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.

signaler à un administrateur
Commentaire de deck_bsd le 20/06/2006 14:44:21

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

signaler à un administrateur
Commentaire de BruNews le 20/06/2006 19:43:24 administrateur CS

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.

signaler à un administrateur
Commentaire de vecchio56 le 22/06/2006 21:25:49 administrateur CS

C'est marrant certains processus on comme chemin \??\C:\, ou \SystemRoot
D'autres processus n'ont pas de chemin du tout :)

signaler à un administrateur
Commentaire de deck_bsd le 23/06/2006 11:41:10

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.

signaler à un administrateur
Commentaire de eRoZion le 30/06/2006 01:07:50

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

signaler à un administrateur
Commentaire de deck_bsd le 30/06/2006 16:43:29

Merci . C'est normale car il n'est pas fait :D lol

signaler à un administrateur
Commentaire de shuttleur le 13/12/2007 14:56:24

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 ?

signaler à un administrateur
Commentaire de BruNews le 13/12/2007 15:16:45 administrateur CS

ZwQuerySystemInformation()
avec SystemProcessesAndThreadsInformation

exemple d'utilisation ici:
http://www.cppfrance.com/code.aspx?id=17658

signaler à un administrateur
Commentaire de shuttleur le 13/12/2007 16:08:04

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


signaler à un administrateur
Commentaire de deck_bsd le 14/12/2007 08:54:17

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.

signaler à un administrateur
Commentaire de BruNews le 14/12/2007 09:58:16 administrateur CS

Il est clair que:
if(debutant || userApiExist) userApiUtiliser();

signaler à un administrateur
Commentaire de NeoUmbrella le 10/02/2008 11:51:00

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.

signaler à un administrateur
Commentaire de Thez le 03/03/2008 10:05:27

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

signaler à un administrateur
Commentaire de deck_bsd le 03/03/2008 21:17:07

Yop,

Neo et Thez, merci je vai corrigé cela sous peu.

signaler à un administrateur
Commentaire de HeavenForsaker le 28/03/2008 17:53:30

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 ?

signaler à un administrateur
Commentaire de HeavenForsaker le 28/03/2008 19:23:30

re,

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

Toujours avec access denied.

signaler à un administrateur
Commentaire de BruNews le 29/03/2008 18:38:56 administrateur CS

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.

signaler à un administrateur
Commentaire de deck_bsd le 30/03/2008 13:03:20

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

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

processus vivant, api win32 [ par alkove ] Bonjour, je me demandais si il était possible sous windows avec l'api win32, de savoir si un processus est encore actif, ou si il a planté o Gestion du clavier avec l'API Windows [ par tintin72 ] SalutJe programme un petit jeu en OpenGL et pour l'instant j'utilise DirectInput pour la gestion entrée du clavier, mais j'aimerais plutot gérer l'ent [Visula c++]Mettre appli dans processus [ par goutbouyo ] Salut,J'ai un programme qui doit s'executer tous les jours automatiquement.Je voudrais donc le mettre uniquement dans les processus et que lorsque il Gestion et affichage de bitmaps (API Windows). [ par _michel ] Bonjour à tous,J'ai un problème avec les bitamps:je voudrai conserver en mémoire pendant l'execution de mon programme la "capture d'écran", pour l'aff fermer application/processus (executer un bat en c++) [ par dgac ] Bonjour ,j'ai cherché sur internet sans trouvé comment faire pour fermer une application ou tuer un processus (movamp.exe dans mon cas)Par ailleur je les messages en API [ par Adeon ] salut!En API il intervient toujours cette partie de codes qui suit qui gere les messages fenetres.J'aimerai que qq m'explique ce que font les fonction Gestion de tâche/processus [ par Sniperr ] Bonjour,Je suis en train de créer un programme de surveillance me permettant de donner une alerte lorsque le processus "iexplore.exe" est lancé, ou lo gestion de processus fifo lifo sjf rr en langague c++ [ par maris ] je cherche une implemejtatiopn en c++ des algorithmes de gestion de processus: fifo, lifo, sjfet roun robinmercie temps d'exécution d'un processus (c/linux) [ par davidauche ] bonjour a tt monde,comment calculer le temps d'exécution d'un processus en c sous linux!?j'essaie avec time et times  + struct tms marc Question sur l'API Win32 [ par NikoGJ ] Bonjour Ca fait déjà un moment que je cherche la réponse à cette question, mais je n'ai pour l'instant pas eu de réponse pr&


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS