Завершение другого выполнения приложения - какао

Forth был языком, разработанным для низкоуровневого кода раннего ЦП. Его наиболее достойной внимания особенностью был RPN основанные на стеке математические операции. Тот же тип математики используется на ранних калькуляторах HP. Например, 1+2+3+4 = был бы записан как 1, 2, 3, 4, +, +, +

5
задан smorgan 24 September 2009 в 14:03
поделиться

3 ответа

Если вы работаете в Mac OS X 10.6, Snow Leopard, вы можете использовать новый метод NSRunningApplication terminate .

10
ответ дан 18 December 2019 в 07:10
поделиться

AppleScript - это довольно высокоуровневый способ отправки одного события Quit. SIGTERM - это довольно грубый низкоуровневый способ.

Правильный способ выйти из другого приложения - получить его серийный номер процесса (psn) и отправить ему событие Apple kAEQuitApplication с этими двумя строками кода:

result = AEBuildAppleEvent( kCoreEventClass, kAEQuitApplication, typeProcessSerialNumber, &currentProcessPSN,
sizeof(ProcessSerialNumber), kAutoGenerateReturnID, kAnyTransactionID, &tAppleEvent, &tAEBuildError,"");
result = AESend( &tAppleEvent, &tReply, kAEAlwaysInteract+kAENoReply, kAENormalPriority, kNoTimeOut, nil, nil );        

Вы можете сделать это из C, C ++ или Objective-C, и вам необходимо связать его с CoreServices.framework.

11
ответ дан 18 December 2019 в 07:10
поделиться

Для приложений высокого уровня, таких как iTunes, основанных на Carbon или Cocoa, они будут отвечать на Applescript. «Выйти» - это часть стандартного пакета. Вам просто нужно отправить:

tell application "iTunes" to quit

Есть много способов сделать это. Проще всего реализовать системный вызов osascript :

osascript -e 'tell application "iTunes" to quit'

Оттуда вы можете перейти к более мощным инструментам, таким как Apple Events , которые были бы очень подходящими для этой проблемы. . Вы могли бы даже пойти так далеко, как Scripting Bridge , но для завершения приложения это было бы излишним.

Это будет работать только для программ, которые реагируют на Applescript, но это должна быть любая программа, которую вы бы см. в своем доке (и я предполагаю, что вы имеете в виду под «приложениями»). Для процессов более низкого уровня, таких как демоны,

1
ответ дан 18 December 2019 в 07:10
поделиться