IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Threads : énumération [WD16]


Sujet :

WinDev

  1. #1
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut Threads : énumération
    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 ?

  2. #2
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Points : 50
    Points
    50
    Par défaut
    Moi, ce que je fait :


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

  3. #3
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 994
    Points : 9 370
    Points
    9 370
    Par défaut
    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 :
    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)
    et l'appel de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MonPID est un entier
    MonPID = ExeDonnePID()
    EnumererThread(MonPID)
    Si on veut lister tous les threads de tous les processus il suffit d'enlever la clause Where dans le script VBS.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  4. #4
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    Merci, je vais explorer ces deux pistes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/12/2008, 13h51
  2. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  3. Programmer des threads
    Par haypo dans le forum C
    Réponses: 6
    Dernier message: 02/07/2002, 13h53
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. [Kylix] Pb de Thread !!
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 25/04/2002, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo