Lister les threads en C

Lister les threads en C - C - Programmation

Marsh Posté le 10-09-2006 à 10:25:36    

Bonjour, je souhaiterais créer un petit éxécutable en console qui listerais les threads en cour sous windows, comment le faire en C ?

 

Merci de votre aide

Reply

Marsh Posté le 10-09-2006 à 10:25:36   

Reply

Marsh Posté le 10-09-2006 à 10:43:19    

med365 a écrit :

Bonjour, je souhaiterais créer un petit éxécutable en console qui listerais les threads en cour sous windows, comment le faire en C ?


http://www.developpez.net/forums/forumdisplay.php?f=16


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 10-09-2006 à 11:00:51    

Reply

Marsh Posté le 10-09-2006 à 11:09:38    

Sebou77 a écrit :

un peu limite de le renvoyer vers un autre forum ...


OK, tu proposes quoi ? De le laisser en plan ?
 
Que je sache, il n'y a pas d'équivallent ici, si ?


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 10-09-2006 à 11:19:28    

Bah de lui expliquer comment faire [:proy] , comme ça on commencera à avoir un équivalent ici :)
 
Et si tu sais pas bah laisse le en plan comme tu dis, il est surement assé grand pour chercher sur google, ou alors quelqu'un passera pour lui filer un coup de main :)

Reply

Marsh Posté le 10-09-2006 à 15:35:15    

Un exemple tout fait de la MSDN par exemple:
http://msdn.microsoft.com/library/ [...] cesses.asp


Message édité par breizhbugs le 10-09-2006 à 15:36:03
Reply

Marsh Posté le 10-09-2006 à 16:19:59    

Salut, merci pour le lien vers la doc MSDN mais au juste, c'est du C ou du C++ ? (ca change rien vu que je vais copier-coller le truc dans DevCpp mais au moins que je sache ce que c'est :D)

Reply

Marsh Posté le 10-09-2006 à 16:24:44    

med365 a écrit :

Salut, merci pour le lien vers la doc MSDN mais au juste, c'est du C ou du C++ ? (ca change rien vu que je vais copier-coller le truc dans DevCpp mais au moins que je sache ce que c'est :D)


C'est du (mauvais) C.


Compiling: main.c
main.c: In function `PrintProcessNameAndID':
main.c:33: warning: unsigned int format, DWORD arg (arg 3)
main.c: At top level:
main.c:39: warning: return type of 'main' is not `int'


Ne pas oubler  

C:\CodeBlocks\lib\libpsapi.a;


dans la liste des bibliothèques. Ca fonctionne :  


<unknown>  (PID: 0)
<unknown>  (PID: 4)
smss.exe  (PID: 816)
<unknown>  (PID: 1056)
winlogon.exe  (PID: 1080)
services.exe  (PID: 1124)
lsass.exe  (PID: 1136)
svchost.exe  (PID: 1288)
<unknown>  (PID: 1384)
svchost.exe  (PID: 1524)
<unknown>  (PID: 1584)
<unknown>  (PID: 1712)
spoolsv.exe  (PID: 168)
fpavupdm.exe  (PID: 292)
ndassvc.exe  (PID: 324)
svchost.exe  (PID: 456)
<unknown>  (PID: 536)
vsmon.exe  (PID: 736)
<unknown>  (PID: 1420)
Explorer.EXE  (PID: 712)
SOUNDMAN.EXE  (PID: 1908)
VTtrayp.exe  (PID: 1948)
VTTimer.exe  (PID: 1956)
AGRSMMSG.exe  (PID: 1864)
Ltmoh.exe  (PID: 1816)
OSD.EXE  (PID: 2064)
SynTPLpr.exe  (PID: 2100)
SynTPEnh.exe  (PID: 2112)
PDVDServ.exe  (PID: 2128)
qttask.exe  (PID: 2136)
F-Sched.exe  (PID: 2144)
F-StopW.EXE  (PID: 2152)
jusched.exe  (PID: 2192)
HPWuSchd2.exe  (PID: 2232)
zlclient.exe  (PID: 2276)
Application Launcher.exe  (PID: 2308)
ctfmon.exe  (PID: 2340)
SsAAD.exe  (PID: 2376)
hpqtra08.exe  (PID: 2648)
ndasmgmt.exe  (PID: 2664)
soffice.exe  (PID: 2804)
soffice.BIN  (PID: 2880)
CapabilityManager.exe  (PID: 2940)
Generic.exe  (PID: 3048)
epmworker.exe  (PID: 3248)
thunderbird.exe  (PID: 1608)
FIREFOX.EXE  (PID: 1556)
codeblocks.exe  (PID: 2040)
console_runner.exe  (PID: 3472)
cmd.exe  (PID: 3360)
forums.exe  (PID: 2480)
 
Press ENTER to continue.


Message édité par Emmanuel Delahaye le 10-09-2006 à 16:32:31

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 10-09-2006 à 17:06:24    

Re, justement j'ai code::blocks et la compilation ne marche pas, j'ai deux "warnings"

Citation :


warning: return type of 'main' is not 'int'
warning: no newline at end of file


 
Je suis nul en C mais j'ai besoin de ce bout de code, sauriez-vous comment régler ce problème ?

Reply

Marsh Posté le 10-09-2006 à 17:12:15    

med365 a écrit :

Citation :


warning: return type of 'main' is not 'int'
warning: no newline at end of file


Je suis nul en C


ça se soigne...

Citation :


mais j'ai besoin de ce bout de code, sauriez-vous comment régler ce problème ?

Remplace void main () par int main (). Evidemment, il faut retourner quelquechose de cohérent au système ...
 
Ajoute une ligne vide à la fin de ton code.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 10-09-2006 à 17:12:15   

Reply

Marsh Posté le 10-09-2006 à 17:21:38    

Ah ok, en fait ca ne marche toujours pas, voilà ce que j'ai comme rapport de compilation :Project   : Console application

 
Code :
  1. Compiler  : GNU GCC Compiler (called directly)
  2. Directory : D:\Documents\C\
  3. --------------------------------------------------------------------------------
  4. Switching to target: default
  5. Linking console executable: D:\Mehdi\Documents\C\process.exe
  6. .objs\main.o:main.c:(.text+0x81): undefined reference to `EnumProcessModules@16'
  7. .objs\main.o:main.c :( .text+0xa2): undefined reference to `GetModuleBaseNameA@16'
  8. .objs\main.o:main.c :( .text+0x121): undefined reference to `EnumProcesses@12'
  9. collect2: ld returned 1 exit status
  10. Process terminated with status 1 (0 minutes, 0 seconds)


 

Apres si je fais "run" il me dit "it seems that this project is not built yet. Do you want to build it now?"

 

Donc en français : "il semblerait que ce projet n'a pas encore été compilé. Voulez-vous le compiler maintenant ?"

 

Je réponds oui et pas d'évolution...


Message édité par med365 le 10-09-2006 à 17:34:43
Reply

Marsh Posté le 10-09-2006 à 17:27:55    

L'édition de liens a foiré. Te manque des .lib à associer au projet pour générer le binaire


Message édité par slash33 le 10-09-2006 à 17:28:33
Reply

Marsh Posté le 10-09-2006 à 17:35:52    

:fou:  En gros ca sert à rien que je m'acharnes sur ce bout de code C mal fichu, autant le faire en Java ou en Cobol :D lol

Reply

Marsh Posté le 10-09-2006 à 17:42:53    

Ou alors tu n'as pas mis les options qui vont bien pour compiler et surtout faire l'édition de liens avec gcc. Je ne pratique pas l'outil mais ça doit être comme ailleurs : défini dans le projet ou en ligne de commande.

Reply

Marsh Posté le 10-09-2006 à 17:46:58    

Le code C (et C++) a cette particularité que l'interface est dissociée de son implémentation dans des fichiers différents (enfin la plupart du temps). Quand tu emploies une bibliothèque tu inclues les fichiers d'en-tête pour indiquer au compilateur la description des fonctions que tu utilises. Seulement ça permet seulement de résoudre la compilation, pas de produire l'exécutable. Il faut donc ajouter l'implémentation qui se présente sous la forme (le plus souvent) d'un blibliothèque statique .lib (même pour les DLL - sauf chargement dynamique...). La phase de liaison de l'ensemble est appelée édition de liens.
 
Clair qu'en Java tu n'as pas ce problème quoique tu doives toujours définir le classpath ce qui revient sensiblement au même. :o


Message édité par slash33 le 10-09-2006 à 17:49:54
Reply

Marsh Posté le 10-09-2006 à 17:47:05    

:??:   j'ai regardé dans le répertoire des libs de CodeBlocks et le truc libpsapi.a n'y est pas


Message édité par med365 le 10-09-2006 à 17:47:34
Reply

Marsh Posté le 10-09-2006 à 17:51:35    

Ben apparement c'est du code Windows. Il doit certainement manquer quelque chose à ton projet ou une option de compilation mal définie.


Message édité par slash33 le 10-09-2006 à 17:52:41
Reply

Marsh Posté le 10-09-2006 à 17:54:56    

D'après la MSDN, le code des fonctions non résolues devrait se trouver dans Psapi.lib
 
Faut pas installer des extensions orientées OS ?


Message édité par slash33 le 10-09-2006 à 17:55:49
Reply

Marsh Posté le 10-09-2006 à 19:34:44    

Ben ca j'en sais rien je sais pas programmer en C (j'éssai d'apprendre la prog mais j'ai pas trop le temps) je fais des batch et un peu d'HTML et de CSS mais je ne connais pas de langage comme le C, l'ADA ou autre :/

Reply

Marsh Posté le 11-09-2006 à 14:04:10    

Hum, je sais pas si le GCC est fourni avec le "SDK de l'api Win32" de windows, sinon faudrait penser a le telecharger...
http://www.microsoft.com/downloads [...] laylang=en


Message édité par breizhbugs le 11-09-2006 à 14:05:24
Reply

Marsh Posté le 11-09-2006 à 19:48:24    

Ou tu peux aussi utiliser les fonctions Tool Help de Kernel32 qui te permettent très simplement de lister Process, Module et Thread.
Elles sont déclarées dans Tlhelp32.h mais si tu n'as pas les déclarations, tu peux les importer dynamiquement avec GetProcAddress.
Et oui, c'est toujours utile d'avoir le SDK quand on code sous windows. :)

Reply

Marsh Posté le 12-09-2006 à 20:02:42    

OK, je vais voir, donc le code ca serait ca :

Code :
  1. #include <Tlhelp32.h>
  2. #include <stdio.h>
  3. #include <stdio.h>
  4. int main( )
  5. {
  6.     GetProcAddress;
  7. }
 

C'est ca ?

Reply

Marsh Posté le 12-09-2006 à 22:13:03    

med365 a écrit :

OK, je vais voir, donc le code ca serait ca :

Code :
  1. #include <Tlhelp32.h>
  2. #include <stdio.h>
  3. #include <stdio.h>
  4. int main( )
  5. {
  6.     GetProcAddress;
  7. }


C'est ca ?


Avant de se lancer dans les méandres de l'API Windows, il serait bon d'apprendre à coder en langage C. Les appels de fonctions se font toujours avec des parenthèses. C != Pascal...
 
Et il doit y avoir des paramètres ou des valeurs à récupérer... Bref il faut cesser de programmer au hasard...
 
http://mapage.noos.fr/emdel/images/c_warn.png


Message édité par Emmanuel Delahaye le 12-09-2006 à 22:13:37

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 13-09-2006 à 21:25:07    

Oui, désolé. Je crois que finalement je trouverais un moyen de me passer de ce code...

Reply

Marsh Posté le 16-09-2006 à 13:37:11    

Sebou77 a écrit :

un peu limite de le renvoyer vers un autre forum ...


 
Oui, surtout dev...ez.net, ou le niveau est digne d'un stagiaire débutant (genre "je sais changer la couleur d'un menu" et hop, je m'auto-proclame "expert"..., des copier-coller de msdn en changeant les variables et rajoutant : auteur : "tartampion", des nids à bugs infâmes... bref, à mourir de rire...)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed