J'ai une partie ancienne de code VB6 qui énumère les processus en cours sur la machine via un appel à CreateToolhelpSnapshot. Je tente d'exécuter ce code sur Win 2003 R2 et j'ai des raisons d'être un peu méfiant de la liste des processus qu'il retourne. J'ai trouvé this article ce qui m'amène à penser que je devrais utiliser un autre appel d'API sur 2003. Cependant, je ne trouve pas l'article Microsoft KnowledgeBase qu'il mentionne. Ou je ne trouve pas la version anglaise de toute façon. J'ai trouvé the article in German mais je ne peux pas lire l'allemand. Je pense que cela me conseille d'utiliser une API appelée EnumProcs mais je ne trouve pas une telle API dans les documents de l'API Microsoft (du moins pas sur msdn.microsoft.com). Donc, devrais-je utiliser CreateToolhelpSnapshot sur Win 2003 ou y a-t-il d'autres API que je devrais utiliser? Et est-ce que quelqu'un a une idée où je pourrais trouver une copie de cet article de KB en anglais?Comment énumérer des processus à partir de VB 6 sur Win 2003?
Répondre
Cette article donne une liste assez complète de comment faire ce dont vous avez besoin. Il utilise essentiellement l'appel de l'API Windows EnumProcesses au lieu de l'appel GetActiveProcesses.
Notez que ce n'est pas seulement Windows Server 2003, mais aussi toutes les versions Windows de la famille NT (XP, Vista, etc.).
Google Translate fait un excellent travail de traduction de cette page allemande KB en anglais: HOW TO: Enumerate Applications Using Win32 APIs.
Vous avez raison; Je suis habitué aux traductions laissant quelque chose à désirer, donc je n'ai même pas pris la peine de l'essayer. –
- Votre article freevbcode.com est un reflet rouge du bathroom wall of code. Il dit que CreateToolhelp32Snapshot ne fonctionne que sur Windows 95, 98 et Me. C'était vrai une fois - ce n'était pas dans NT - mais dans Windows 2000 et toutes les versions ultérieures.
- La page MSDN sur la section CreateToolhelp32Snapshot remarques suggère des raisons pour lesquelles l'appel peut échouer. (Il indique que cela fonctionne sur Windows Server 2003: «serveur minimum pris en charge est Windows 2000 Server» et l'appel d'API n'a pas été retiré.)
- Si vous ne pouvez pas obtenir CreateToolhelpSnapshot pour fonctionner, passez à Ant's answer et utilisez EnumProcesses. Plus d'informations sur cette méthode: un ancien Microsoft Knowledge Base article sur l'énumération des processus de VB6 vous suggère d'utiliser EnumProcesses. Vous devrez distribuer PSAPI.DLL, mais il est gratuit avec le Platform SDK. Une autre source sur EnumProcesses est de l'ancien mais excellent livre Hardcore Visual Basic, maintenant disponible free online.
Je ne savais pas qu'il fonctionnait encore avec 2000 et plus. Belle trouvaille. – Ant
- 1. Comment joindre au processus en utilisant VC6 sur win 2003?
- 2. Problème de codage - Win Xp vs Win 2003
- 3. IIS crash se produit souvent .. Application ASP.net sur IIS 6 Win 2003
- 4. Journaux des compteurs de performance - Migration d'un grand nombre de Win 2000 vers Win 2003
- 5. Fichier PDF dans VB.NET (problème de mise à niveau à partir de VB 6)
- 6. Chargement lent des images sur IIS 6, Windows Server 2003
- 7. Comment servir les fichiers d'IIS 6 sur Windows Server 2003?
- 8. processus spawn dans win XP
- 9. Comment exécuter WS dans le serveur Win 2003
- 10. Dans Access 2003, comment puis-je appeler une fonction VB personnalisée à partir d'une requête?
- 11. énumérer les processus et leurs connexions
- 12. Installation à distance des processus stockés sur MySQL
- 13. DB2 Client v9.5 sur Win 2003 Prend beaucoup de temps pour établir la connexion
- 14. asp.net mvc sur asp.net 2.0 + extensions ajax 1.0 + iis 6 sur win 2k3 serveur
- 15. MySQL automatisé sauvegarde sur Win Server
- 16. Détection des processus à l'aide de l'audio sous Windows
- 17. IIS 6: Activation des chemins virtuels
- 18. Connexion à Crystal Reports 4.6 à partir de VB
- 19. VB Obtention d'un objet à partir de la ligne DataGridView
- 20. MS 2003 - SQL Chaîne à l'intérieur de la question VB - remplir les résultats dans un formulaire?
- 21. vs 2008 C# app ne fonctionnera pas sur win vista
- 22. Lancer un processus à partir d'Objective-C sur le bureau
- 23. Appel d'un processus Linux à partir de Windows et réception de la sortie standard
- 24. Problème lors de la récupération des valeurs de formulaire à partir de VB
- 25. Comment exécuter un processus à partir de PHP
- 26. HTTP Post/Upload à partir de Visual Basic 6
- 27. Comment énumérer() sur une liste de tuples en Python?
- 28. Comment appeler un processus Java à partir de Windows Powershell?
- 29. Comment stocker une date dans MS SQL à partir de VB?
- 30. MS Access 2003 - Informations à partir d'une sortie de formulaire dans un fichier texte
En fait, c'est seulement NT. CreateToolhelp32Snapshot a été ajouté à 2000 et il est toujours dans maintenant. http://msdn.microsoft.com/en-us/library/ms682489(VS.85).aspx – MarkJ
Je veux dire, lien sympa, et EnumProcesses vaut la peine d'essayer si CreateToolhelp32Snapshot ne renvoie pas les résultats voulus. Mais CreateToolhelp32Snapshot fonctionne sur Windows Server 2003 en fonction des documents MSDN. – MarkJ