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
English
| Русский
| Italiano
| Español
| Shqip
Includere AppleScript in Qt
Se volete includere un AppleScript in Qt potete usare questo script come punto di partenza.
<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 />
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().