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]]<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]] | ||
=Запуск AppleScript из Qt= | = Запуск AppleScript из Qt = | ||
Если вы хотите вызвать команды AppleScript в Qt, вы можете использовать следующий пример кода, как отправную точку. | Если вы хотите вызвать команды AppleScript в Qt, вы можете использовать следующий пример кода, как отправную точку. | ||
<code><br />#include <QApplication&gt;<br />#include <QProcess&gt;<br />#include <QDebug&gt; | |||
osascript с аргументом | 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(<s>1);<br /> QByteArray result = p.readAll();<br /> QString resultAsString(result); // if appropriate<br /> qDebug() << "the result of the script is&quot; << resultAsString; | |||
<br /> return 0;<br />}<br /></code> | |||
<br />В переменной aScript находться скрипт, который мы хотим выполнить. Затем создается QProcess для вызова osascript</s> консольного интерпретатора AppleScript'а. | |||
osascript с аргументом "-l AppleScript&quot;, чтобы явно указать язык и отключить автоматическое определение. | |||
Скрипт передается в osascript через стандартный ввод. | Скрипт передается в osascript через стандартный ввод. | ||
Line 14: | Line 24: | ||
Если байты для чтения доступны, программа читает их и конвертирует в QString (если подходящий тип для ожидаемых данных!). В реальности программа должна использовать подключения различных readyReadXXX() сигналов и связывать их с слотами для сбора данных. | Если байты для чтения доступны, программа читает их и конвертирует в QString (если подходящий тип для ожидаемых данных!). В реальности программа должна использовать подключения различных readyReadXXX() сигналов и связывать их с слотами для сбора данных. | ||
Revision as of 06:20, 24 February 2015
English
| Русский
| Italiano
| Español
| Shqip
Запуск AppleScript из Qt
Если вы хотите вызвать команды AppleScript в Qt, вы можете использовать следующий пример кода, как отправную точку.
<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(<s>1);<br /> QByteArray result = p.readAll();<br /> QString resultAsString(result); // if appropriate<br /> qDebug() << "the result of the script is&quot; << resultAsString;
<br /> return 0;<br />}<br />
В переменной aScript находться скрипт, который мы хотим выполнить. Затем создается QProcess для вызова osascript консольного интерпретатора AppleScript'а.
osascript с аргументом "-l AppleScript", чтобы явно указать язык и отключить автоматическое определение.
Скрипт передается в osascript через стандартный ввод.
Прогамма ждет каких-нибудь выходных данных из скрипта. Мы организуем чтения вывода из скрипта, следовательно используем waitForReadyRead.
Если байты для чтения доступны, программа читает их и конвертирует в QString (если подходящий тип для ожидаемых данных!). В реальности программа должна использовать подключения различных readyReadXXX() сигналов и связывать их с слотами для сбора данных.