VBA: liste des applications ouvertes

Bonjour,

qq pourrai-t-il de mdonner le code VBA pour lister le nom de toute mes application et fenêtres en cours d'exécution.

j'ai bien essayé:

For Each Window in Windows
Debug.print Window.Name
next

Le seul problème est que ça ne me donne seulement le nom des fenêtre Excel ouvertes et pas celle des autres programmes (Word, nouvel email outlook par exemple,...)

Merci d'avance.

Stach ;-)
Configuration: Windows XP
Internet Explorer 7.0

6 réponses

  1. re:

    En effet, c'est bien cela pour la variable CmptPtr ...

    Il manque son incrémentation ainsi que l'initialisation.

    J'ai du placer ce code un peu trop vite, il faut m'en excuser.

    Effectivement, le caractère [ . ] fonctionne en local,
    mais je suis de nature explicite et ne sachant pas quels
    étaient les besoins spécifiques du demandeur ...

    Personne n'est parfait :-)

    Cdt

    Lupin
    1. Bonjour,
      Si je comprends bien, il doit y avoir un CmptPtr = CmptPtr + 1 quelque part... dans la boucle.

      Et j'ai cru voir ailleurs qu'on peut même (pour faire simple) remplacer :

      Set Reseau = CreateObject("WScript.Network")
      Ordinateur = LCase(Reseau.ComputerName)

      par :

      Ordinateur ="."
      Evidemment c'est moins générique. Mais en local ça fonctionne.

      Merci en tous cas :-)
      1. Bonjour,

        CmptPtr = 1

        For each ...

        Cette variable n'est utilisée que pour former un label homogène

        ...
        Ptr08
        Ptr09
        Ptr10
        Ptr11
        ...

        Si l'on veut opérer une manipulation de la variable PtrXY
        celle-ci contient toujours le même nombre de caractères.

        Cdt

        Lupin
        1. @Lupin :
          Bonjour et merci pour ce poste qui m'aide bien.
          Comment est initialisée la variable CmptPtr ?
          1. Bonjour,

            Tu peux utiliser les objets de scripting, toutefois avec cette méthode
            il te faudra différencier les "process" des applications.

            Dim objWsProcess, objProc, Reseau, msgTexte
            
            Set Reseau  = CreateObject("WScript.Network")
            Ordinateur = LCase(Reseau.ComputerName)
            
            
            Set objWsProcess = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & _
            	                                 Ordinateur).InstancesOf("Win32_Process")	                                 
            For Each objProc in objWsProcess
            	If ( ( CmptPtr - 1 ) < 10 ) Then
            		msgTexte = msgTexte & "Ptr 0" & (CmptPtr - 1) & " = " & objProc.Name & vbCrLf
            	Else
            		msgTexte = msgTexte & "Ptr " & (CmptPtr - 1) & " = " & objProc.Name & vbCrLf
            	End if
            Next
            
            Set objWsProcess = Nothing
            Set objProc = Nothing
            
            WScript.Echo msgTexte
            
            WScript.Quit(0)
            


            Cdt

            Lupin
            1. déjà posé comme question
              1. Super comme réponse!

                Où puis-je trouver la solution à mon problème stp? aurais-tu un lien vers la réponse à cette question déjà posée à me proposer?

                Merci d'avance.

                Stach ;-)
              2. Tu sers a rien sérieux