退出可可中的其他应用程序

use*_*819 5 cocoa

我需要在cocoa中退出其他应用程序.我有一个来自通知的userInfo字典,告诉我应用程序的名称.我尝试使用terminate和forceTerminate方法,但是它们不起作用(我认为它们只适用于雪豹.)

Ken*_*agh 5

我们用-[NSWorkspace runningApplications]。它需要10.6或更高。

void SendQuitToProcess(NSString* named)
{   

    for ( id app in [[NSWorkspace sharedWorkspace] runningApplications] ) 
    {
        if ( [named isEqualToString:[[app executableURL] lastPathComponent]]) 
        {
            [app terminate];
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

否则,您将不得不使用 AppleScript。你可以做一些像这样的老生常谈的事情:

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);
}
Run Code Online (Sandbox Code Playgroud)


Bar*_*ark 2

您可以向应用程序发送退出AppleEvent,请求应用程序退出,但我认为您不能在没有提升权限的情况下强制应用程序退出。查看Scripting Bridge框架,了解发送所需事件的最 Cocoa 风格的方式。