Como dar e passar entrada entre programas separados?

1

Existem tantos programas individuais e úteis por aí cujo código-fonte não está disponível, alguns dos quais se integrariam lindamente uns com os outros! O único problema é que não sei como permitir que diferentes programas interajam entre si no Windows 7.

Eu conheço C ++ / C # / XAML; entender como usar a linha de comando para passar argumentos de inicialização para programas e como fazer arquivos em lote ... Mas como você controla manualmente os programas assim que eles são executados?

Eu também sei como inserir dados do Windows, como movimentos ou cliques do mouse, mas isso só permite interação direta com o sistema operacional, não com programas específicos que estão abertos no momento.
Eu quero poder passar a entrada para programas individuais enquanto faz outras coisas.

Veja um exemplo de problema que estou tentando resolver:

I have a program I call "Member Extractor" that extracts my site's member's contact information; although the program can only be controlled through its GUI; and doesn't have the ability to export the data yet. (so each piece of information such as Email, Phone #, etc. must be copied to the clip board 1-by-1, and pasted into a new "Microsoft Excel" document).

Once the information is copied and saved in an organized way, I need to import that data 1-by-1 to multiple new "Contact Profiles" generated by the "Universal Contact Manager" extension of the "Google Chrome Web Browser"

  • This all needs to be done automatically by some kind of script that can run in the background while I'm working on other stuff.*

How can it be done??

Algo que eu imagino que preciso é de várias pranchetas virtuais ... mas o que mais?

    
por Griffin 06.02.2012 / 06:53

1 resposta

2

Se você puder fazer isso manualmente, poderá automatizá-lo facilmente usando o software de macro. Minha arma de escolha é o AutoHotkey , especificamente AutoHotkey_L .

Documentação

Com base no seu exemplo, o seguinte será útil:

  • Variáveis e Array para trabalhar com dados.

  • ControlSend e ControlClick para trabalhar com janelas não ativas.

  • Loops e While Loops para repetição.

Por exemplo, a lógica do seu script pode ter esta aparência *:
* Pode haver pequenos erros, mas você obtém a essência!

;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++
}
    
por 06.02.2012 / 08:04