2012-02-07 12 views
14

ile kapatmayı/yeniden başlatmayı reddediyorum Bağlamsal menü ve 10.5 üzerinde simge kaplaması için CFPlugin kullanıyorum (scplugin ile aynı). Uygulamam ve bulucu arasındaki iletişim için, distributed object kullanıyorum. Eklentimi Contextual menu items klasörüne yükledikten sonra, sistemim yeniden başlatmayı/kapatmayı/Oturum Kapatmayı reddediyor. Aktivite monitöründe, bulucudan çıkamıyorum, sadece zorla çıkma bulucu için ağlıyor. konsolunda Ben Bulucu ve başvurumun arasındaki iletişim olmadan 10.5.8Sistemim NSAppleScript sınıfı

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

üzerine alıyorum, sistem yeniden başlatma/shutdow/Çıkış iyi çalışıyor. 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 

günü
kimse bana yardım edebilir mi? Benim sorun çözüldü

DÜZENLEME. Apple komut dosyasını çalıştırmak için NSAppleScript kullanıyordum. Şimdi NSTask kullanıyorum ve sistem yeniden başlat/kapat/Oturum kapatılıyor. Herkes bana bunun nedenini açıklayabilir mi?

+0

Bulucu dışında bir uygulamadan arandığınızda, "noErr" döndürdüğünüzü fark ettim. Finder'dan çağrıldığında ne dönersiniz? – user1118321

+0

Uygulama bulucuysa, kodumu çalıştırıyorum. –

+0

Ve sonra ne dönüyor? – user1118321

cevap

0

Benim sorunum çözüldü. Apple komut dosyasını çalıştırmak için NSAppleScript kullanıyordum. Şimdi ben NSTask kullanıyorum ve sistem yeniden başlat/kapat/Oturum çalışıyor iyi çalışıyor

1

NSAppleScript yalnızca ana iş parçacığından çalıştırılabilir, böylece ana iş parçacığı çalışırken engellenecektir.

İletinin kök nedeninin ne olduğundan emin değiliz, ancak komut dosyasının bulunamamış veya düzgün bir şekilde çalıştırıldığını varsayalım ve sonra ana iş parçacığı engellenir veya zaman aşımına uğrar ve tüm kapatma sıranız sıkışır.

Diğer tarafta, NSTask düzgün şekilde çok iş parçacıklı olduğundan, dizi engellenmeyecek ve bilgisayarınız düzgün bir şekilde kapanacaktır. İşte

birkaç alakalı bağlantılar etrafında toplanan şunlardır:

+0

Ikincil iş parçacığından Apple komut dosyası çalıştırıyordum. ve bir seferde sadece bir iş parçacığı. –

+0

Gönderen (NSAppleScript ana iş parçacığı değil) [http://www.cocoabuilder.com/archive/cocoa/163902-nsapplescript-not-in-the-main-thread.html # 164093] 'Tüm NSAppleScript örneği aynı ComponentInstance'ı kullanıyor gibi görünüyor, ayrıca ComponentInstance da uygulamayı AppleScriptable olarak ayarlamak için ana iş parçacığı tarafından da kullanılabilir. Her bir iş parçacığının kendi AppleScript ComponentInstance'ı olması gerekir. Bu teoride, her birinin kendi AppleScript ' 'u çalıştıran birden fazla iş parçacığına sahip olması gerekir. Bu nedenle, bulucu NSApplescript sınıfı kullanmıyor. –