Como manter o foco na janela do aplicativo com o AppleScript

2

Estou tentando iniciar meu aplicativo de scanner usando o AppleScript. Eu iniciei o aplicativo Printer e sei como enviar o comando de pressionamento de tecla, mas quando a janela da impressora é aberta ele não tem foco no Finder, portanto, o pressionamento de tecla não está funcionando, a menos que eu já tenha a janela da impressora aberta e em foco. Como faço para definir o foco do Finder para a minha janela para que ele ouça o pressionamento de tecla?

Aqui está o meu código:

tell application "System Events"
  tell application "Canon MX510 series" to activate
  key code 20 using command down
end tell
JoeyV
fonte
O pressionamento de tecla vai para o Finder ou para a série Canon MX510?
Arc676

Respostas:

1

Tente enviar o comando Activate para fora do tell do evento do sistema, que seria o método padrão.

tell application "Canon MX510 series" to activate
my testAppRunning()
tell application "System Events"    
    key code 20 using command down
end tell

on testAppRunning()
    set test to 0
    repeat while test = 0
        log test
        tell application "System Events" to set test to count (every process whose name is "Canon MX510 series")
        delay 2
        --/*we do this even if active because it doesn't naturally come to front*/
        try
            tell application "Canon MX510 series" to activate
        end try
        if (test > 0) then exit repeat
    end repeat
end testAppRunning
Tetsujin
fonte
Isso não faz diferença para mim usando o Google Chrome (eu não tenho "Cannon MX510 series" instalado). Colocando tell application "Google Chrome" to activate dentro de tell application "System Events" bloquear ou não ainda ativa o Chrome e envia o pressionamento de tecla.
aglasser
Isso já está acontecendo? Estou pensando se não é necessário verificar quando o processo está em execução .. script tweaked para garantir que o aplicativo está em execução & amp; mais à frente ...
Tetsujin
Com o Chrome não funcionando, o código do OP funciona
aglasser