VBA: liste des applications ouvertes

Stach -  
 Utilisateur anonyme -
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. Utilisateur anonyme
     
    déjà posé comme question
    0
    1. Stach
       
      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. Stach2
       
      Tu sers a rien sérieux
      0
  2. Utilisateur anonyme
     
    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
  3. DMike92
     
    @Lupin :
    Bonjour et merci pour ce poste qui m'aide bien.
    Comment est initialisée la variable CmptPtr ?
    0
  4. Utilisateur anonyme
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Dmike92
     
    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
  7. Utilisateur anonyme
     
    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