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. déjà posé comme question
    0
    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 ;-)
      0
    2. Tu sers a rien sérieux
      0
  2. 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
    0
    1. @Lupin :
      Bonjour et merci pour ce poste qui m'aide bien.
      Comment est initialisée la variable CmptPtr ?
      0
      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
        0
        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 :-)
          0
          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
            0