VBA: lista de aplicaciones abiertas

Stach -  
 Usuario anónimo -
Hola,

¿alguien podría darme el código VBA para listar el nombre de todas mis aplicaciones y ventanas en ejecución?

he probado:

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

El único problema es que solo me devuelve el nombre de las ventanas de Excel abiertas y no de los otros programas (Word, nuevo correo de Outlook por ejemplo,...)

Gracias de antemano.

Stach ;-)
Configuración: Windows XP Internet Explorer 7.0

6 respuestas

  1. Usuario anónimo
     
    QUIKYLAND (ajouté par Google) -- Profitez-en !

    Soyez Français, achetez Français -- Be French, buy French
    0
    1. Stach
       
      ¡Genial como respuesta!

      ¿Dónde puedo encontrar la solución a mi problema, por favor? ¿tendrías un enlace a la respuesta a esta pregunta ya planteada para proponerme?

      Gracias de antemano.

      Stach ;-)
      0
    2. Stach2
       
      Me sirve de nada, seriedad.
      0
  2. Usuario anónimo
     
    Hola,

    Puedes usar objetos de scripting, sin embargo con este método
    tendrás que diferenciar los "process" de las aplicaciones.

     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 :
    Hola y gracias por esta publicación, me ayuda mucho.
    ¿Cómo se inicializa la variable CmptPtr?
    0
  4. Usuario anónimo
     
    Hola,

    CmptPtr = 1

    Para cada uno ...

    Esta variable solo se utiliza para formar una etiqueta homogénea

    ...

    Ptr08
    Ptr09
    Ptr10
    Ptr11
    ...

    Si se quiere realizar una manipulación de la variable PtrXY
    esta siempre contiene el mismo número de caracteres.

    Cdt

    Lupin
    0
  5. Dmike92
     
    Hola,
    Si entiendo bien, debe haber un CmptPtr = CmptPtr + 1 en algún lugar... en el bucle.

    Y creí ver en otro sitio que incluso se puede (para hacer simple) reemplazar:

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

    por :

    Ordinateur ="."
    Evidentemente es menos genérico. Pero en local funciona.

    Gracias de todos modos :-)
    0
  6. Usuario anónimo
     
    re:

    En efecto, eso es correcto para la variable CmptPtr ...

    Le falta su incremento así como la inicialización.

    Tuve que colocar este código un poco demasiado rápido, debo disculparme.

    Efectivamente, el carácter [ . ] funciona en local,
    pero soy de naturaleza explícita y sin saber cuáles
    eran las necesidades específicas del solicitante ...

    Nadie es perfecto :-)

    Saludos

    Lupin
    0