1 votos

¿Cómo puedo utilizar AppleScript para escribir texto en una ventana nueva?

Estoy tratando de hacer un applescript que se escribe a sí mismo en una nueva ventana del Editor Applescript. Pero no puedo comprender cómo es que se pegue a sí mismo con las citas. El código que tengo ahora es

tell application "System Events"
    keystroke "n" using command down
    keystroke "tell application (System Events) keystroke (n) using command down end tell"
end tell

2voto

user3439894 Puntos 5883

Las comillas que están destinados a ser literal necesitan ser escapado con una barra invertida y en lugar de utilizar keystroke, utilizar el ejemplo siguiente para crear un nuevo AppleScript documento que contiene la quería código:

tell application "AppleScript Editor"
    set text of (make new document) to "tell application \"System Events\"\n\tkeystroke \"n\" using command down\nend tell"
end tell

Copie y pegue el código de ejemplo anterior en un nuevo AppleScript documento y pulse el botón Compilar. A continuación, le parecen:

tell application "AppleScript Editor"
    set text of (make new document) to "tell application \"System Events\"
    keystroke \"n\" using command down
end tell"
end tell

A continuación, presione el botón de Ejecutar y que se cree un nuevo AppleScript documento que contenga los siguientes:

tell application "System Events"
    keystroke "n" using command down
end tell

Que si, a continuación, pulse el botón de Ejecución de este nuevo documento, se crea una nueva en blanco AppleScript documento.

Nota: Dependiendo de la versión de OS X/macOS la tell application "AppleScript Editor" línea puede ser tell application "Script Editor". Usted todavía puede pegar el ejemplo de código, como es, en el Editor de secuencias de Comandos y se eliminará automáticamente el Apple parte de AppleScript a mostrar como tell application "Script Editor".

1voto

klanomath Puntos 19587

Usted está probablemente en busca de un AppleScript quine. Yo no soy programador ni un científico de la computación así que realmente no puedo explicar cómo escribir la auto-reproducción de código. Adicional no sé si un (a alto nivel) lenguaje de script como AppleScript es lo suficientemente potente como para producir arbitraria quines.

He encontrado sólo dos ejemplos de trabajo de AppleScript para quines lo que puede ayudarle a crear su propio - sólo el primero crea un nuevo AppleScript:

set d to "on string_from_ASCII_numbers(x)
    set s to ASCII character of item 1 of x
    repeat with i from 2 to number of items in x
        set s to s & (ASCII character of item i of x)
    end repeat
end string_from_ASCII_numbers
set set_d_to to {115, 101, 116, 32, 100, 32, 116, 111, 32}
set scriptEditor to {83, 99, 114, 105, 112, 116, 32, 69, 100, 105, 116, 111, 114}
set quine to string_from_ASCII_numbers(set_d_to) & quote & d & quote & return & d
tell application string_from_ASCII_numbers(scriptEditor) to make new document with properties {contents:quine}"
on string_from_ASCII_numbers(x)
    set s to ASCII character of item 1 of x
    repeat with i from 2 to number of items in x
        set s to s & (ASCII character of item i of x)
    end repeat
end string_from_ASCII_numbers
set set_d_to to {115, 101, 116, 32, 100, 32, 116, 111, 32}
set scriptEditor to {83, 99, 114, 105, 112, 116, 32, 69, 100, 105, 116, 111, 114}
set quine to string_from_ASCII_numbers(set_d_to) & quote & d & quote & return & d
tell application string_from_ASCII_numbers(scriptEditor) to make new document with properties {contents:quine}

Enlace de descarga: quine.applescript.zip

set s to "on run {s}
  set pre to «data utxt0073006500740020007300200074006f00200022» as text
  set post to «data utxt0022000a00720075006e0020007300630072006900700074002000730020007700690074006800200070006100720061006d006500740065007200730020007b0073007d»
  pre & s & post
end run"
run script s with parameters {s}

Link de descarga: quine.scpt

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X