Call an AppleScript from Qt/ru: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
m (AutoSpider moved page Call an AppleScript from Qt Russian to Call an AppleScript from Qt/ru: Localisation)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[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]]
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}


=Запуск AppleScript из Qt=
[[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, вы можете использовать следующий пример кода, как отправную точку.
Если вы хотите вызвать команды AppleScript в Qt, вы можете использовать следующий пример кода, как отправную точку.


В переменной aScript находться скрипт, который мы хотим выполнить. Затем создается QProcess для вызова osascript – консольного интерпретатора AppleScript’а.
<code>
#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;
}
</code>


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


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


Если байты для чтения доступны, программа читает их и конвертирует в QString (если подходящий тип для ожидаемых данных!). В реальности программа должна использовать подключения различных readyReadXXX() сигналов и связывать их с слотами для сбора данных.
Если байты для чтения доступны, программа читает их и конвертирует в QString (если подходящий тип для ожидаемых данных!). В реальности программа должна использовать подключения различных readyReadXXX() сигналов и связывать их с слотами для сбора данных.
Если вам не нужды выходные данные скрипта, просто вызовите waitForFinished() сразу после closeWriteChannel(). Программа будет ждать пока ваш скрипт закончит выполняться, иначе поток управления пойдет до конца и преждевременно завершит скрипт.
===Categories:===
* [[:Category:HowTo|HowTo]]

Latest revision as of 15:58, 16 March 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

Запуск 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() сигналов и связывать их с слотами для сбора данных.