Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1400 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Lister les threads en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lister les threads en C

n°1439639
med365
Posté le 10-09-2006 à 10:25:36  profilanswer
 

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

mood
Publicité
Posté le 10-09-2006 à 10:25:36  profilanswer
 

n°1439643
Emmanuel D​elahaye
C is a sharp tool
Posté le 10-09-2006 à 10:43:19  profilanswer
 

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/
n°1439648
Sebou77
French Tech powaa :-)
Posté le 10-09-2006 à 11:00:51  profilanswer
 
n°1439649
Emmanuel D​elahaye
C is a sharp tool
Posté le 10-09-2006 à 11:09:38  profilanswer
 

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/
n°1439653
Sebou77
French Tech powaa :-)
Posté le 10-09-2006 à 11:19:28  profilanswer
 

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

n°1439735
breizhbugs
Posté le 10-09-2006 à 15:35:15  profilanswer
 

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
n°1439747
med365
Posté le 10-09-2006 à 16:19:59  profilanswer
 

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)

n°1439749
Emmanuel D​elahaye
C is a sharp tool
Posté le 10-09-2006 à 16:24:44  profilanswer
 

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/
n°1439758
med365
Posté le 10-09-2006 à 17:06:24  profilanswer
 

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 ?

n°1439761
Emmanuel D​elahaye
C is a sharp tool
Posté le 10-09-2006 à 17:12:15  profilanswer
 

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/
mood
Publicité
Posté le 10-09-2006 à 17:12:15  profilanswer
 

n°1439766
med365
Posté le 10-09-2006 à 17:21:38  profilanswer
 

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
n°1439772
slash33
Posté le 10-09-2006 à 17:27:55  profilanswer
 

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
n°1439776
med365
Posté le 10-09-2006 à 17:35:52  profilanswer
 

: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

n°1439778
slash33
Posté le 10-09-2006 à 17:42:53  profilanswer
 

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.

n°1439780
slash33
Posté le 10-09-2006 à 17:46:58  profilanswer
 

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
n°1439781
med365
Posté le 10-09-2006 à 17:47:05  profilanswer
 

:??:   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
n°1439783
slash33
Posté le 10-09-2006 à 17:51:35  profilanswer
 

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
n°1439786
slash33
Posté le 10-09-2006 à 17:54:56  profilanswer
 

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
n°1439833
med365
Posté le 10-09-2006 à 19:34:44  profilanswer
 

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 :/

n°1440282
breizhbugs
Posté le 11-09-2006 à 14:04:10  profilanswer
 

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
n°1440533
anordem
Posté le 11-09-2006 à 19:48:24  profilanswer
 

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

n°1441358
med365
Posté le 12-09-2006 à 20:02:42  profilanswer
 

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 ?

n°1441427
Emmanuel D​elahaye
C is a sharp tool
Posté le 12-09-2006 à 22:13:03  profilanswer
 

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/
n°1442080
med365
Posté le 13-09-2006 à 21:25:07  profilanswer
 

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

n°1443377
marctes
Posté le 16-09-2006 à 13:37:11  profilanswer
 

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

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Lister les threads en C

 

Sujets relatifs
Lister les variables d'un projetBatch - Lister les codecs installer sur le PC
Connexion IRC pour lister utilisateurs d'un channel.lister le contenu d'un dossier si son nom ne contient que des chiffres
Fork() et threadsWin32, threads, messages et blocages
lister les contraintes d'integritéProbleme de synchronisation ecriture tubes / multi threads fork
Lister un historique en supprimant les doublonslister fichiers en fonction de l'état d'une cellule
Plus de sujets relatifs à : Lister les threads en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR