如何终止在cooca中运行的其他应用。假设我有iTunes运行,我在我的应用程序中键入退出,它将退出iTunes。 “iTunes”只是一个例子,它可以是用户想要的任何东西。我可以从我的应用程序中打开任何应用程序,但我想知道如何关闭任何正在运行的应用程序。
感谢
凯文
答案 0 :(得分:11)
AppleScript是一种发送单个Quit事件的高级方法。 SIGTERM是一种非常强大,低级的方式。
退出另一个应用程序的正确方法是获取其进程序列号(psn)并使用以下两行代码向其发送kAEQuitApplication Apple事件:
result = AEBuildAppleEvent( kCoreEventClass, kAEQuitApplication, typeProcessSerialNumber, ¤tProcessPSN,
sizeof(ProcessSerialNumber), kAutoGenerateReturnID, kAnyTransactionID, &tAppleEvent, &tAEBuildError,"");
result = AESend( &tAppleEvent, &tReply, kAEAlwaysInteract+kAENoReply, kAENormalPriority, kNoTimeOut, nil, nil );
您可以从C,C ++或Objective-C执行此操作,并且必须与CoreServices.framework链接。
答案 1 :(得分:10)
如果你在Mac OS X 10.6,Snow Leopard上运行,你可以使用新的NSRunningApplication terminate方法。
答案 2 :(得分:1)
对于像iTunes这样基于Carbon或Cocoa的高级应用程序,他们会对Applescript做出回应。 “退出”是标准包的一部分。你只需要发送:
tell application "iTunes" to quit
有很多方法可以做到这一点。最简单的方法是对osascript
进行系统调用:
osascript -e 'tell application "iTunes" to quit'
你可以从那里上升到更强大的工具,如Apple Events,这对于这个问题非常合适。你甚至可以到Scripting Bridge,但是对于终止一个应用程序来说,那就太过分了。
这只适用于响应Applescript的程序,但这应该是您在Dock中看到的任何程序(我认为您的意思是“应用程序”)。对于像守护进程这样的低级进程,您需要其他技术,例如launchctl
或kill
,但如果您需要,我们可以讨论这些技术。