Call an AppleScript from Qt/ru

From Qt Wiki
< Call an AppleScript from Qt
Revision as of 15:58, 16 March 2015 by AutoSpider (talk | contribs) (AutoSpider moved page Call an AppleScript from Qt Russian to Call an AppleScript from Qt/ru: Localisation)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
English
Русский Italiano Español Shqip

Запуск AppleScript из Qt

Если вы хотите вызвать команды AppleScript в Qt, вы можете использовать следующий пример кода, как отправную точку.

  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;

}

В переменной aScript находться скрипт, который мы хотим выполнить. Затем создается QProcess для вызова osascript- консольного интерпретатора AppleScript'а.

osascript с аргументом "-l AppleScript", чтобы явно указать язык и отключить автоматическое определение.

Скрипт передается в osascript через стандартный ввод.

Прогамма ждет каких-нибудь выходных данных из скрипта. Мы организуем чтения вывода из скрипта, следовательно используем waitForReadyRead.

Если байты для чтения доступны, программа читает их и конвертирует в QString (если подходящий тип для ожидаемых данных!). В реальности программа должна использовать подключения различных readyReadXXX() сигналов и связывать их с слотами для сбора данных.