Lister les threads en C - C - Programmation
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
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 ?
Marsh Posté le 10-09-2006 à 11:19:28
Bah de lui expliquer comment faire , 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
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
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 )
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 ) |
C'est du (mauvais) C.
|
Ne pas oubler
C:\CodeBlocks\lib\libpsapi.a; |
dans la liste des bibliothèques. Ca fonctionne :
|
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 : |
Je suis nul en C mais j'ai besoin de ce bout de code, sauriez-vous comment régler ce problème ?
Marsh Posté le 10-09-2006 à 17:12:15
med365 a écrit :
|
ça se soigne...
Citation : |
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.
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 :
|
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...
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
Marsh Posté le 10-09-2006 à 17:35:52
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 lol
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.
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.
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
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.
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 ?
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
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
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.
Marsh Posté le 12-09-2006 à 20:02:42
OK, je vais voir, donc le code ca serait ca :
Code :
|
C'est ca ?
Marsh Posté le 12-09-2006 à 22:13:03
med365 a écrit : OK, je vais voir, donc le code ca serait 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...
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...
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...)
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