2011-03-13 14 views
5

Diğer uygulamaları kakaodan çıkarmam gerekiyor. Uygulamanın adını söyleyen bir bildirimden bir userInfo sözlüğüm var. Ben yöntemleri sonlandırmak ve forceTerminate çalıştı, ancak çalışmadı (onlar sadece kar leoparı mevcuttur düşünüyorum.)Diğer uygulamaları kakaodan çıkarma

+0

bir ödül nasıl yapabilirim 300 puan yoksa? –

+2

@boyfarrell - Ben onun üzerine lütuf koydum. – pasawaya

cevap

2

Uygulamayı uygulamadan çıkmak isteyen bir AppleEvent uygulamasından çıkabilirsiniz, ancak ben sizi düşünmüyorum Bir uygulamayı yükseltilmiş ayrıcalıklar olmadan çıkmaya zorlayabilir. Gerekli olayları göndermek için en Kakao-y yolu için Scripting Bridge çerçevesinde bir göz atın.

3

-[NSWorkspace runningApplications] kullanıyoruz. 10.6 veya daha yüksek bir değer gerektirir. Aksi takdirde, AppleScript kullanmanız gerekecektir.

void AESendQuitToProcess(const char* named) 
{ 
    char temp[1024]; 

    sprintf(temp, "osascript -e \"tell application \\\"%s\\\"\" -e \"activate\" -e \"quit\" -e \"end tell\"", named); 

    system(temp); 
} 
+0

İyi görünüyor, bugün daha sonra test edeceğim. – pasawaya

3

iyi çözümü (tüm farklı API en uygun OS X son 3-4 sürümleri için muhasebe) AppleScript kullanarak olacak: Böyle bayat bir şey yapabilirsiniz. Obj-C/Python/Java'da kullandığınız her ne olursa olsun gerekli komut dosyasını üretmeniz yeterlidir (özellikle “Kakao'da” dediğiniz için Obj-C'yi varsayıyorum). Bu etkin (appName 'Safari'yi olsaydı) benzeyen bir komut dosyası çalıştırır

// Grab the appName 
NSString *appName = [someDict valueForKey:@"keyForApplicationName"]; 
// Generate the script 
NSString *appleScriptString = 
    [NSString stringWithFormat:@"tell application \"%@\"\nquit\nend tell", 
           appName]; 
// Execute the script 
NSDictionary *errorInfo = nil; 
NSAppleScript *run = [[NSAppleScript alloc] initWithSource:theScript]; 
NSAppleEventDescriptor *theDescriptor = [run executeAndReturnError:&errorInfo]; 
// Get the result if your script happens to return anything (this example 
// really doesn't return anything) 
NSString *theResult = [theDescriptor stringValue]; 
NSLog(@"%@",theResult); 

:

tell application "Safari" 
quit 
end tell 

O veya bu SO kontrol Ve NSAppleScript sınıfını (zoraki bir örnek) kullanarak yürütme soru

Terminating Another App Running - Cocoa

+0

Bu iyi bir şeydi, ancak tüm uygulamalar için işe yaramadı, bu yüzden destekledim ama ödülü vermedim. – pasawaya