Call an AppleScript from Qt/it

From Qt Wiki
< Call an AppleScript from Qt
Revision as of 11:07, 20 November 2015 by Mcosta (talk | contribs) (Undo revision 19876 by Mcosta (talk))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
English
Русский Italiano Español Shqip

Includere AppleScript in Qt

Se volete includere un AppleScript in Qt potete usare questo script come punto di partenza.

  1. include <QApplication>
  2. include <QProcess>
  3. include <QDebug>

int main(int argc, char **argv) {

QApplication a(argc, argv);

QString aScript =

"tell application quot;System Eventsquot;"
" activate\n"
" display dialog quot;Hello worldquot;"
"end tell\n";

QString osascript = "/usr/bin/osascript";

QStringList processArguments;
processArguments << "-l" << "AppleScript";

QProcess p;

p.start(osascript, processArguments);
p.write(aScript.toUtf8());
p.closeWriteChannel();
p.waitForReadyRead(–1);
QByteArray result = p.readAll();
QString resultAsString(result); // if appropriate
qDebug() << "the result of the script is" << resultAsString;

return 0; }

Prende l'attuale script e lo mette nella variabile aScript. Quindi crea un QProcess per invocare il tool a riga di comando AppleScript osascript.

Gli argomenti passati invocano osascript con -l AppleScript, in modo che non necessiti di indovinare il linguaggio di scripting.

Lo script è quindi mandato a osascript via stdin.

Il programma attende i dati in output dello script per iniziare. Noi_dobbiamo_leggere l'ouput dello script, quindi usiamo waitForReadyRead.

Se ci sono bytes disponibili, il programma li legge e li converte in un QString (se questo va bene per i dati previsti!). Nel mondo reale il programma deve collegarsi ai vari segnali di readyReadXXX() e connettersi agli slot per collezionare i dati.

Se non necessiti dell'output dello script, chiama waitForFinished() dopo closeWriteChannel().