¿Cómo dar y pasar entradas entre programas separados?

¿Cómo dar y pasar entradas entre programas separados?

¡Hay tantos programas individuales y útiles cuyo código fuente no está disponible, algunos de los cuales se integrarían maravillosamente entre sí!El único problema es que no sé cómo permitir que diferentes programas interactúen entre sí en Windows 7.

Conozco C++/C#/XAML; comprender cómo usar la línea de comando para pasar argumentos de inicio a los programas y cómo crear archivos por lotes... Pero, ¿cómo se controlan los programas de forma no manual una vez que se están ejecutando?

También sé cómo manejar las entradas de Windows, como movimientos o clics del mouse, pero esto solo permite la interacción directa con el sistema operativo, no con programas específicos que estén abiertos en ese momento.
Quiero poder pasar información a programas individuales mientras hago otras cosas.


Aquí hay un problema de ejemplo que estoy tratando de resolver:

Tengo un programa al que llamo "Extractor de miembros" que extrae la información de contacto de los miembros de mi sitio; aunque el programa solo se puede controlar a través de su GUI; y aún no tiene la capacidad de exportar los datos (por lo que cada pieza de información como correo electrónico, número de teléfono, etc. debe ser copiado en el portapapeles 1 por 1 y pegado en un nuevo "Microsoft Excel"documento).

Una vez que la información se copia y guarda de forma organizada, necesito importar esos datos 1 por 1 a varios nuevos "Perfiles de contacto"generado por el"Administrador de contactos universal"extensión de la "Navegador web Google Chrome"

  • Todo esto debe hacerse automáticamente mediante algún tipo de script que pueda ejecutarse en segundo plano mientras trabajo en otras cosas.*

¿¿Cómo puede hacerse esto??


Algo que me imagino que necesito son varios portapapeles virtuales... pero ¿qué más?

Respuesta1

Si puede hacerlo a mano, puede automatizarlo fácilmente utilizando un software de macros. Mi arma preferida esAutoHotkey, específicamenteAutoHotkey_L.

Documentación

Según su ejemplo, lo siguiente será útil:

Por ejemplo, la lógica de su script puede verse así*:
*Puede haber errores menores, ¡pero entiende lo esencial!

;Note: find Control and Window names using AutoIt3 Window Spy

Name := []
Email := []
;etc...

members = 100

while (members > 0)
{
    Clipboard = 
    ControlSend, MemberExtrControl, ^a^c, MemberExtrWindow
    ClipWait
    Name.Insert(Clipboard)
    
    Clipboard = 
    ControlSend, MemberExtrControl, Tab^a^c, MemberExtrWindow
    Clipwait
    Email.Insert(Clipboard)
    
    ;etc...

    members--   
}

index = 1

Loop % Names.MaxIndex()
{
    name := Name.Remove(index)
    email := Email.Remove(index)
    ;etc...
    
    ControlSend, ContactMgrControl, %name%, ContactMgrWindow
    ControlSend, ContactMgrControl, Tab%email%, ContactMgrWindow
    
    ;etc...
    
    index++
}

información relacionada