Call an AppleScript from Qt/ru: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[Call_an_AppleScript_from_Qt|English]] | [[Call_an_AppleScript_from_Qt|English]] | ||
| '''Русский''' | |||
| [[Call_an_Apple_Script_from_Qt_Italian |Italiano]] | |||
| [[Call_an_AppleScript_from_Qt_Spanish|Español]] | |||
| [[Call_an_AppleScript_from_Qt_Albanian|Shqip]] | |||
[[Category:HowTo]] | |||
= Запуск AppleScript из Qt = | = Запуск AppleScript из Qt = | ||
Line 5: | Line 10: | ||
Если вы хотите вызвать команды AppleScript в Qt, вы можете использовать следующий пример кода, как отправную точку. | Если вы хотите вызвать команды AppleScript в Qt, вы можете использовать следующий пример кода, как отправную точку. | ||
<code> | <code> | ||
#include <QApplication> | |||
#include <QProcess> | |||
#include <QDebug> | |||
int main(int argc, char **argv) | int main(int argc, char **argv) | ||
{ | |||
QApplication a(argc, argv); | |||
QString aScript = | QString aScript = | ||
"tell application quot;System Eventsquot;" | |||
" activate\n" | |||
" display dialog quot;Hello worldquot;" | |||
"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; | |||
} | |||
</code> | |||
В переменной aScript находться скрипт, который мы хотим выполнить. Затем создается QProcess для вызова osascript- консольного интерпретатора AppleScript'а. | |||
osascript с аргументом "-l AppleScript", чтобы явно указать язык и отключить автоматическое определение. | osascript с аргументом "-l AppleScript", чтобы явно указать язык и отключить автоматическое определение. |
Revision as of 12:13, 25 February 2015
English | Русский | Italiano | Español | Shqip
Запуск AppleScript из Qt
Если вы хотите вызвать команды AppleScript в Qt, вы можете использовать следующий пример кода, как отправную точку.
#include <QApplication>
#include <QProcess>
#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() сигналов и связывать их с слотами для сбора данных.