Call an AppleScript from Qt/es: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[ | [[Category:QtDevelopmentSpanish::General]]<br />[[Category:HowTo]]<br />[[Category:Spanish]] | ||
[[Call_an_AppleScript_from_Qt|English]]<br />| [[Call_an_AppleScript_from_Qt_Russian|Русский]]<br />| [[Call_an_Apple_Script_from_Qt_Italian |Italiano]]<br />| '''Español'''<br />| [[Call_an_AppleScript_from_Qt_Albanian|Shqip]] | |||
Si necesitas hacer una llamada a un comando AppleScript desde dentro de Qt, este trozo de código te puede servir como inicio | Si necesitas hacer una llamada a un comando AppleScript desde dentro de Qt, este trozo de código te puede servir como inicio | ||
<code><br />#include <QApplication&gt;<br />#include <QProcess&gt;<br />#include <QDebug&gt; | |||
int main(int argc, char **argv)<br />{<br /> QApplication a(argc, argv); | |||
QString aScript =<br /> "tell application quot;System Eventsquot;"<br /> " activate\n&quot;<br /> " display dialog quot;Hello worldquot;"<br /> "end tell\n&quot;; | |||
QString osascript = "/usr/bin/osascript&quot;;<br /> QStringList processArguments;<br /> processArguments << "-l&quot; << "AppleScript&quot;; | |||
QProcess p;<br /> p.start(osascript, processArguments);<br /> p.write(aScript.toUtf8());<br /> p.closeWriteChannel();<br /> p.waitForReadyRead(–1);<br /> QByteArray result = p.readAll();<br /> QString resultAsString(result); // if appropriate<br /> qDebug() << "the result of the script is&quot; << resultAsString; | |||
return 0;<br />}<br /></code> | |||
Este mantiene el script actual en una variable aScript. Luego crea un QProcess para invocar el comando AppleScript usando la herramienta de linea de comandos osascript. | Este mantiene el script actual en una variable aScript. Luego crea un QProcess para invocar el comando AppleScript usando la herramienta de linea de comandos osascript. | ||
Line 16: | Line 30: | ||
En un programa en el mundo real este debe conectarse a las diferentes signals readyReadXXX() y conectar un slot a el para recolectar los datos. | En un programa en el mundo real este debe conectarse a las diferentes signals readyReadXXX() y conectar un slot a el para recolectar los datos. | ||
Revision as of 06:24, 24 February 2015
English
| Русский
| Italiano
| Español
| Shqip
Si necesitas hacer una llamada a un comando AppleScript desde dentro de Qt, este trozo de código te puede servir como inicio
<br />#include <QApplication&gt;<br />#include <QProcess&gt;<br />#include <QDebug&gt;
int main(int argc, char **argv)<br />{<br /> QApplication a(argc, argv);
QString aScript =<br /> "tell application quot;System Eventsquot;"<br /> " activate\n&quot;<br /> " display dialog quot;Hello worldquot;"<br /> "end tell\n&quot;;
QString osascript = "/usr/bin/osascript&quot;;<br /> QStringList processArguments;<br /> processArguments << "-l&quot; << "AppleScript&quot;;
QProcess p;<br /> p.start(osascript, processArguments);<br /> p.write(aScript.toUtf8());<br /> p.closeWriteChannel();<br /> p.waitForReadyRead(–1);<br /> QByteArray result = p.readAll();<br /> QString resultAsString(result); // if appropriate<br /> qDebug() << "the result of the script is&quot; << resultAsString;
return 0;<br />}<br />
Este mantiene el script actual en una variable aScript. Luego crea un QProcess para invocar el comando AppleScript usando la herramienta de linea de comandos osascript.
Usamos el argumento -l AppleScript para llamar a osascript, esto es necesario para que no tenga que adivinar que lenguaje de script es usado.
El guión se alimenta entonces a través osascript via stdin.
El programa espera la salida de datos del script para iniciar. Debemos_Leer la salida del script para a continuación utilizar waitForReadyRead.
Si hay bytes disponibles, el programa los lee y los convierte luego a QString (si eso está bien para los datos esperados!).
If there are bytes available, the program reads them and converts them to a QString (if that is ok for the expected data!).
En un programa en el mundo real este debe conectarse a las diferentes signals readyReadXXX() y conectar un slot a el para recolectar los datos.