Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.

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]] | '''Русский''' | [[Call an Apple Script from Qt Italian|Italiano]] | [[Call an AppleScript from Qt Spanish|Español]] | [[Call an AppleScript from Qt Albanian|Shqip]]
[[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, вы можете использовать следующий пример кода, как отправную точку.


В переменной aScript находться скрипт, который мы хотим выполнить. Затем создается QProcess для вызова osascript – консольного интерпретатора AppleScript’а.
<code><br />#include &lt;QApplication&amp;gt;<br />#include &lt;QProcess&amp;gt;<br />#include &lt;QDebug&amp;gt;


osascript с аргументом -l AppleScript”, чтобы явно указать язык и отключить автоматическое определение.
int main(int argc, char **argv)<br />{<br /> QApplication a(argc, argv);
 
QString aScript =<br /> &quot;tell application quot;System Eventsquot;&quot;<br /> &quot; activate\n&amp;quot;<br /> &quot; display dialog quot;Hello worldquot;&quot;<br /> &quot;end tell\n&amp;quot;;
 
QString osascript = &quot;/usr/bin/osascript&amp;quot;;<br /> QStringList processArguments;<br /> processArguments &lt;&lt; &quot;-l&amp;quot; &lt;&lt; &quot;AppleScript&amp;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() &lt;&lt; &quot;the result of the script is&amp;quot; &lt;&lt; resultAsString;
<br /> return 0;<br />}<br /></code>
<br />В переменной aScript находться скрипт, который мы хотим выполнить. Затем создается QProcess для вызова osascript</s> консольного интерпретатора AppleScript'а.
 
osascript с аргументом &quot;-l AppleScript&amp;quot;, чтобы явно указать язык и отключить автоматическое определение.


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


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

Revision as of 06:20, 24 February 2015

English
| Русский
| Italiano
| Español
| Shqip

Запуск AppleScript из Qt

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

<br />#include &lt;QApplication&amp;gt;<br />#include &lt;QProcess&amp;gt;<br />#include &lt;QDebug&amp;gt;

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

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

QString osascript = &quot;/usr/bin/osascript&amp;quot;;<br /> QStringList processArguments;<br /> processArguments &lt;&lt; &quot;-l&amp;quot; &lt;&lt; &quot;AppleScript&amp;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() &lt;&lt; &quot;the result of the script is&amp;quot; &lt;&lt; resultAsString;
<br /> return 0;<br />}<br />


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

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

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

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

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