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

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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.