Call an AppleScript from Qt/ru: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
[[Call_an_AppleScript_from_Qt|English]]<br />| '''Русский'''<br />| [[Call_an_Apple_Script_from_Qt_Italian |Italiano]]<br />| [[Call_an_AppleScript_from_Qt_Spanish|Español]]<br />| [[Call_an_AppleScript_from_Qt_Albanian|Shqip]]<br />[[Category:HowTo]]
[[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><br />#include <QApplication><br />#include <QProcess><br />#include <QDebug>
<code>
#include <QApplication>
#include <QProcess>
#include <QDebug>


int main(int argc, char **argv)<br />{<br /> QApplication a(argc, argv);
int main(int argc, char **argv)
{
QApplication a(argc, argv);


QString aScript =<br /> "tell application quot;System Eventsquot;"<br /> " activate\n"<br /> " display dialog quot;Hello worldquot;"<br /> "end tell\n";
QString aScript =
"tell application quot;System Eventsquot;"
" activate\n"
" display dialog quot;Hello worldquot;"
"end tell\n";


QString osascript = "/usr/bin/osascript";<br /> QStringList processArguments;<br /> processArguments << "-l" << "AppleScript";
QString osascript = "/usr/bin/osascript";
QStringList processArguments;
processArguments << "-l" << "AppleScript";


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" << resultAsString;
QProcess p;
<br /> return 0;<br />}<br /></code>
p.start(osascript, processArguments);
<br />В переменной aScript находться скрипт, который мы хотим выполнить. Затем создается QProcess для вызова osascript- консольного интерпретатора AppleScript'а.
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() сигналов и связывать их с слотами для сбора данных.