VBA: liste des applications ouvertes

Fermé
Stach - 11 mai 2008 à 02:31
 Utilisateur anonyme - 8 déc. 2011 à 21:30
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 ;-)

6 réponses

Utilisateur anonyme
11 mai 2008 à 02:33
déjà posé comme question
0
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
Tu sers a rien sérieux
0
Utilisateur anonyme
18 oct. 2011 à 13:20
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
@Lupin :
Bonjour et merci pour ce poste qui m'aide bien.
Comment est initialisée la variable CmptPtr ?
0
Utilisateur anonyme
8 déc. 2011 à 18:54
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
Utilisateur anonyme
8 déc. 2011 à 21:30
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