8
A
回答
2
要启动一个应用程序:
[[NSWorkspace sharedWorkspace] launchApplication:@"App"];
从http://forums.macnn.com/79/developer-center/134947/launch-another-application-from-cocoa/
要退出:
的NSApplication有-terminate:方法:[NSApp terminate: nil];
从How can I tell my Cocoa application to quit from within the application itself?
3
假设这是针对10.6,您可以使用NSRunningApplication
与NSWorkspace
一起。首先,你应该确定应用程序使用已经运行:
[[NSWorkspace sharedWorkspace] runningApplications]
如果它没有运行,那么你可以使用NSWorkspace
启动它,但我建议较新的呼叫,launchApplicationAtURL:options:configuration:error:
,它会返回一个NSRunningApplication
,你可以用来终止应用程序。有关更多详细信息,请参阅NSWorkspace。
7
正如前面提到的它很容易启动其他应用程序与NSWorkspace类的帮助,例如:
- (BOOL)launchApplicationWithPath:(NSString *)path
{
// As recommended for OS X >= 10.6.
if ([[NSWorkspace sharedWorkspace] respondsToSelector:@selector(launchApplicationAtURL:options:configuration:error:)])
return nil != [[NSWorkspace sharedWorkspace] launchApplicationAtURL:[NSURL fileURLWithPath:path isDirectory:NO] options:NSWorkspaceLaunchDefault configuration:nil error:NULL];
// For older systems.
return [[NSWorkspace sharedWorkspace] launchApplication:path];
}
你必须做更多的工作,以退出其他应用程序,尤其是如果目标是在10.6之前,但不是太难。这里是一个例子:
- (BOOL)terminateApplicationWithBundleID:(NSString *)bundleID
{
// For OS X >= 10.6 NSWorkspace has the nifty runningApplications-method.
if ([[NSWorkspace sharedWorkspace] respondsToSelector:@selector(runningApplications)])
for (NSRunningApplication *app in [[NSWorkspace sharedWorkspace] runningApplications])
if ([bundleID isEqualToString:[app bundleIdentifier]])
return [app terminate];
// If that didn‘t work then try using the apple event method, also works for OS X < 10.6.
AppleEvent event = {typeNull, nil};
const char *bundleIDString = [bundleID UTF8String];
OSStatus result = AEBuildAppleEvent(kCoreEventClass, kAEQuitApplication, typeApplicationBundleID, bundleIDString, strlen(bundleIDString), kAutoGenerateReturnID, kAnyTransactionID, &event, NULL, "");
if (result == noErr) {
result = AESendMessage(&event, NULL, kAEAlwaysInteract|kAENoReply, kAEDefaultTimeout);
AEDisposeDesc(&event);
}
return result == noErr;
}
相关问题
- 1. 启动Mac上的应用程序
- 2. 终止后iPhone应用程序可以重新启动吗?
- 3. 用mac应用程序启动额外的可执行文件
- 4. 使用python启动和停止mac应用程序
- 5. MAC OS X可可应用程序
- 6. 用C程序启动和终止cu
- 7. 如何在Mac上启动“选择应用程序”对话框?
- 8. 如何在Mac上启动新应用程序?
- 9. 如何在rails应用程序启动时启动线程并在终止时终止它
- 10. 如何在mac上编写可更新的应用程序
- 11. 应用程序终止
- 12. 终止应用程序
- 13. 可启动Qt-Linux应用程序
- 14. 如何在应用程序内部启动应用程序
- 15. 自动阻止应用程序从启动程序启动
- 16. 启动python到mac应用程序
- 17. 如何从AlertDialog终止应用程序?
- 18. 在Mac应用程序中启动应用程序时,XIB未打开
- 19. 我可以从我的应用程序中启动android应用程序吗?
- 20. 如何防止从我的应用程序启动其他应用程序
- 21. 从应用程序启动终端
- 22. 应用程序终止上堆大小
- 23. 可可应用程序系统重启
- 24. 如何防止应用程序在iphone上启动
- 25. Android应用程序 - mediaplayer始终可用
- 26. 如何在应用程序终止时保存应用程序的状态?
- 27. 停止的应用程序启动
- 28. 启动应用程序时启动屏幕时应用程序已停止
- 29. 终止另一个应用程序运行 - 可可
- 30. 使用python3在mac osx启动时启动应用程序?