Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.
Call an AppleScript from Qt/it: Difference between revisions
AutoSpider (talk | contribs) m (AutoSpider moved page Call an Apple Script from Qt Italian to Call an AppleScript from Qt/it: Localisation) |
No edit summary |
||
Line 19: | Line 19: | ||
int main(int argc, char **argv) | int main(int argc, char **argv) | ||
{ | { | ||
QApplication a(argc, argv); | |||
QString aScript = | QString aScript = | ||
"tell application `System Events`" | |||
" activate\n" | |||
" display dialog `Hello world`" | |||
"end tell\n"; | |||
QString osascript = "/usr/bin/osascript"; | QString osascript = "/usr/bin/osascript"; | ||
QStringList processArguments; | |||
processArguments << "-l" << "AppleScript"; | |||
QProcess p; | 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; | return 0; | ||
} | } | ||
</code> | </code> | ||
Prende l'attuale script e lo mette nella variabile aScript. Quindi crea un QProcess per invocare il tool a riga di comando AppleScript osascript. | Prende l'attuale script e lo mette nella variabile <code>aScript</code>. 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. | Gli argomenti passati invocano osascript con -l AppleScript, in modo che non necessiti di indovinare il linguaggio di scripting. |
Revision as of 11:05, 20 November 2015
This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine. Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean. |
English | Русский | Italiano | Español | Shqip
Includere AppleScript in Qt
Se volete includere un AppleScript in Qt potete usare questo script come punto di partenza.
#include <QApplication>
#include <QProcess>
#include <QDebug>
int main(int argc, char **argv)
{
QApplication a(argc, argv);
QString aScript =
"tell application `System Events`"
" activate\n"
" display dialog `Hello world`"
"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().