Hacer clic y escribir código Applecript no funciona

1

Estoy haciendo un servicio en Automator que ejecuta el siguiente código AppleScript:

on run {input, parameters}

    tell application "System Events"
        click at {393, 77}
        delay 0.1
        keystroke "Hello"
        delay 0.1
        keystroke return
    end tell
    return input

end run

Si no puede decirlo, estoy tratando de hacer clic en algo y escribir "Hola" allí. Sin embargo, cuando ejecuto esto, todo lo que sucede es que escucho el sonido de "plunk" cuando haces algo inválido, dos veces. ¿Por qué no funciona este código?

El registro dice "Ejecutar AppleScript completado" y luego "Flujo de trabajo completado".

Lo tengo configurado para ejecutarse sin entrada en ninguna aplicación.

Traté de aumentar los retrasos, pero eso no ayudó.

Avíseme si hay más detalles que pueda proporcionar.

RothX
fuente
1
No funciona porque la click atfunción en realidad no simula un clic del mouse del sistema, parece que desencadena una AXPressacción asociada con el objeto debajo del cursor en ese momento. Por lo tanto, parecerá hacer clic en los elementos y botones del menú, ya que esos objetos tienen esta acción programada en ellos; pero, por ejemplo, enfocaría un campo de texto. Su código está bien, pero solo espera click athacer algo que no puede hacer.
CJK
1
De todos modos, la entrada de texto con pulsaciones de teclas es realmente una técnica de último recurso: ¿qué aplicación específica está utilizando o a qué sitio web y campo de texto se dirige? Probablemente haya una mejor manera de hacerlo.
CJK
@CJK Estoy tratando de escribir un mensaje de chat en sistemas de chat como Skype. Sin embargo, esperaba poder usarlo para más de una aplicación, por eso hice el método de pulsación de tecla.
RothX
@CJK ¿Entonces no hay forma de simular un clic real del mouse?
RothX
No, no hay forma de simular un clic "físico" del mouse con AppleScript ordinario; y, que yo sepa, incluso AS-ObjC no puede hacerlo (aunque solía hacerlo, y puede volver a hacerlo en el futuro). Tendría que usar un complemento / adición de secuencias de comandos como se sugiere en la respuesta a continuación.
CJK

Respuestas:

1

Sugeriría descargar la adición de secuencias de comandos de AppleScript toolbox. Una vez instalado en las ubicaciones adecuadas, en Script Editor.app, podrá utilizar los comandos de la suite de teclas y mouse del diccionario de la caja de herramientas de AppleScript para ... obtener, configurar y hacer clic en las ubicaciones del mouse (coordenadas)

Aquí hay un código de muestra usando comandos del diccionario de la caja de herramientas AppleScript


EJEMPLO 1

set mousePointLocation1 to {745, 110} -- The Collapsed Menu
set mousePointLocation2 to {780, 340} -- TV Link In The Menu
set mousePointLocation3 to {885, 180} -- Apple TV 4K Icon

delay 1 -- For Demonstration Purposes
activate application "Safari"
delay 1 -- For Demonstration Purposes

AST click at mousePointLocation1 ¬
    number of clicks 1

delay 1 -- For Demonstration Purposes

AST click at mousePointLocation2 ¬
    number of clicks 1

delay 1 -- For Demonstration Purposes

AST click at mousePointLocation3 ¬
    number of clicks 1

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí


EJEMPLO 2

-- For Demonstration Purposes
-- Gives Me Time To Put The Mouse Where I Want
delay 3

-- Gets Coordinates Of The Current Mouse Location
set currentMouseLocation to AST mouse point location

-- Mouse Click At Defined Location
AST click at currentMouseLocation ¬
    number of clicks 2 -- How Many Clicks

ingrese la descripción de la imagen aquí


EJEMPLO 3

set mousePointLocation to {20.0, 20.0}

delay 1 -- For Demonstration Purposes

AST set mouse point location mousePointLocation ¬
    without holding mouse down

delay 1 -- For Demonstration Purposes

AST click at mousePointLocation ¬
    number of clicks 1

ingrese la descripción de la imagen aquí

wch1zpink
fuente
Intentaré esto, pero ¿sabes por qué mi código inicial no funcionó?
RothX
1
Sin conocer toda la información, como en qué aplicación está intentando hacer clic, etc. No hay forma de aislar dónde se activa el error
wch1zpink