Bonjour,
Faute d'avoir trouvé, est-il possible (si oui comment ?) d'énumérer les processus créé par le projet en cours d'exécution ?
Bonjour,
Faute d'avoir trouvé, est-il possible (si oui comment ?) d'énumérer les processus créé par le projet en cours d'exécution ?
Moi, ce que je fait :
Le seul bémol est que ton nom de thread n'est plus vraiment libre, mais c'est pas l'important (ce que tu peux faire, c'est ajouter une description de ton nom de thread)ListeThread est un tableaux de * chaines // tableaux avec les noms des thread lancé dans l'application
// Fonction : RenvoiNomThread()
// Elle renvoi un nom pour ton thread et l'ajoute dans le tableau
Oc est un entier = tableauoccurence(ListeThread)+1
Nom est un chaine = "Thread_Appli_"+Oc
Ajoute(ListeThread,Nom)
renvoyer Nom
// Fonction : RenvoiListeThreadExecution()
// Liste des Thread en Exécution
Resultat est une chaine
si tableauoccurence(ListeThread) alors
pour i = 1 a tableauoccurence(ListeThread)
si threadetat(ListeThread[i]) <> ThreadInexistant alors
// Thread Actif..
Resultat += ListeThread[i]+RC
fin
Fin
fin
renvoyer Resultat // Liste des thread actif séparé par un RC
bonjour,
je ne sais pas si tu cherches à énumérer les threads au niveau thread windev ou au niveau système mais si c'est au niveau système voici du code pour le faire en utilisant WMI :
et l'appel de la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 PROCEDURE EnumererThread(lepid) // J.P Décembre 2011 sListe est une chaîne oScript est un objet Automation "MSScriptControl.ScriptControl" MonScriptVBS est une chaîne = [ Function ScanThreads() Set objDictionary = CreateObject("Scripting.Dictionary") Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") sInfo = "" Set colProcesses = objWMIService.ExecQuery _ ("Select * from Win32_Process Where ProcessId = %1") For each objProcess in colProcesses objDictionary.Add objProcess.ProcessID, objProcess.Name Next Set colThreads = objWMIService.ExecQuery _ ("Select * from Win32_Thread Where ProcessHandle = %1") For each objThread in colThreads intProcessID = CInt(objThread.ProcessHandle) strProcessName = objDictionary.Item(intProcessID) If sInfo <> "" Then sInfo = sInfo & Chr(10) & Chr(13) sInfo = sInfo & strProcessName & " - " & objThread.ProcessHandle & _ " - " & objThread.Handle & " - " & objThread.ThreadState Next ScanThreads = sInfo End Function ] MonScriptVBS= ChaîneConstruit(MonScriptVBS,lepid) QUAND EXCEPTION DANS oScript>>Language("VBScript") oScript>>Reset oScript>>AddCode(MonScriptVBS) oScript>>Timeout(-1) //pas de timeout sListe = oScript>>Run("ScanThreads") //Appel FAIRE Erreur("Erreur execution WMI",ExceptionInfo(errInfo)) ExceptionActive() FIN // pour interpréter les caractères de contrôle dans trace // activer Accepter les caractères de contrôle dans le menu contextuel Trace(sListe)
Si on veut lister tous les threads de tous les processus il suffit d'enlever la clause Where dans le script VBS.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 MonPID est un entier MonPID = ExeDonnePID() EnumererThread(MonPID)
Ami calmant, J.P
Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko
Merci, je vais explorer ces deux pistes.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager