Eu não encontrei o envio de strings de teclas para ser muito eficaz neste tipo de circunstância. Existem muitas maneiras diferentes de dar errado. Eu tentaria usar o construído em variáveis da área de transferência e só trocar entre as janelas uma vez.
Você pode usar uma tecla de atalho para fazer um conjunto de instruções usando esse formato no seu script:
z::
; do a bunch of stuff here
return
Eu pegaria os dados do primeiro formulário de uma só vez e os armazenaria:
clipboard = ; Start off empty to allow ClipWait to detect
Send ^c
ClipWait
Field1:=ClipboardAll
Send {Tab} ; move to next field
Depois de obter os dados da primeira janela, você pode ir para a próxima janela:
Send AltTab
(Embora um método melhor seja WinActivate .)
Na segunda janela, você pode mover o formulário para baixo, inserindo dados do primeiro:
clipboard = %Field1%
Send ^v
Wait 100
Send {Tab} ; move to field 2...
Veja a página AutoHotKey de Variáveis da Área de Transferência para referência.