системата ми отказва да се изключи/рестартира с NSAppleScript клас

Използвам CFPlugin за контекстно меню и наслагване на икони на 10.5 (същото като scplugin). За комуникация между моето приложение и търсачката използвам distributed object. След като инсталирах моя плъгин в папка Contextual menu items, системата ми отказва да се рестартира/изключи/излезе. В монитора на активността не мога да изляза от Finder, само принудителното излизане работи за Finder. На конзолата качвам 10.5.8

ERROR | -[ApplicationManager(AppleEventHandling) _tryQuitAllForRequestor:replyEvent:] | _tryQuitAllForRequestor - _vproc_set_global_on_demand returned error -1805620379  

Без комуникация между Finder и моето приложение рестартирането/изключването/излизането на системата работят добре.
На 10.5.4

loginwindow[41]: ERROR | WSActivateApp | SetFrontProcess({0, 7980956}) returned error -600. Unable to activate process.

loginwindow[41]: ERROR | -[ApplicationManager(AppleEventHandling) _tryQuitAllForRequestor:replyEvent:] | _tryQuitAllForRequestor - _vproc_set_global_on_demand returned error -1780878507

Може ли някой да ми помогне?

РЕДАКТИРАНЕ

Моят проблем е решен. Използвах NSAppleScript за изпълнение на ябълков скрипт. Сега използвам NSTask и моето рестартиране/изключване/излизане на системата работят добре. може ли някой да ми обясни причината за това?


person Community    schedule 07.02.2012    source източник
comment
Забелязвам, че когато ви извикат от приложение, различно от Finder, връщате noErr. Какво връщате, когато ви извикат от Finder?   -  person user1118321    schedule 21.02.2012
comment
Ако приложението е Finder, аз изпълнявам своя код.   -  person Parag Bafna    schedule 21.02.2012
comment
И тогава какво връща?   -  person user1118321    schedule 21.02.2012
comment
ще върне OSStatus, грешка или noErr.   -  person Parag Bafna    schedule 21.02.2012
comment
без комуникационен модул моята добавка работи добре.   -  person Parag Bafna    schedule 21.02.2012
comment
инициирате ли DO транзакция в процеса на изключване? Изглежда, че Finder чака отговор от вашия IPC сървър.   -  person maranas    schedule 08.03.2012
comment
Моят проблем е решен. Използвах NSAppleScript за изпълнение на ябълков скрипт. Сега използвам NSTask.   -  person Parag Bafna    schedule 09.03.2012


Отговори (2)


NSAppleScript може да се изпълнява само от основната нишка, така че основната нишка ще бъде блокирана, докато работи.

Не съм много сигурен каква е основната причина за съобщението, но предполагам, че скриптът не може да бъде намерен или изпълнен правилно и след това основната нишка е блокирана или времето за изчакване и цялата ви последователност на изключване се блокира.

От другата страна, NSTask е правилно многонишков, така че последователността няма да бъде блокирана и вашият компютър ще се изключи правилно.

Ето няколко подходящи връзки, събрани около:

person Community    schedule 12.03.2012
comment
Изпълнявах скрипт на Apple от вторична нишка. и само една нишка наведнъж. - person Parag Bafna; 12.03.2012
comment
От (NSAppleScript не е в основната нишка)[cocoabuilder.com/archive/cocoa/ 'Всички екземпляри на NSAppleScript изглежда използват един и същ ComponentInstance също така ComponentInstance може да се използва и от основната нишка, за да настрои приложението да бъде AppleScriptable може би. Всяка нишка трябва да има свой собствен AppleScript ComponentInstance, на теория можете да имате множество нишки, всяка от които да изпълнява собствен AppleScript' Предполагам, че Finder не използва NSApplescript клас. - person Parag Bafna; 12.03.2012

Моят проблем е решен. Използвах NSAppleScript за изпълнение на ябълков скрипт. Сега използвам NSTask и моето рестартиране/изключване/излизане на системата работят добре

person Community    schedule 20.07.2012