我使用下面的代码检查应用程序是否正在运行并关闭它。有人可以提供一个如何请求应用程序calose并等待它关闭然后继续进行的示例吗?
+ (BOOL)isApplicationRunningWithName:(NSString *)applicationName {
BOOL isAppActive = NO;
NSDictionary *aDictionary;
NSArray *selectedApps = [[NSWorkspace sharedWorkspace] runningApplications];
for (aDictionary in selectedApps) {
if ([[aDictionary valueForKey:@"NSApplicationName"] isEqualToString: applicationName]) {
isAppActive = YES;
break;
}
}
return isAppActive;
}
+ (void)stopApplication:(NSString *)pathToApplication {
NSString *appPath = [[NSWorkspace sharedWorkspace] fullPathForApplication:pathToApplication];
NSString *identifier = [[NSBundle bundleWithPath:appPath] bundleIdentifier];
NSArray *selectedApps = [NSRunningApplication runningApplicationsWithBundleIdentifier:identifier];
// quit all
[selectedApps makeObjectsPerformSelector:@selector(terminate)];
}
答案 0 :(得分:3)
您可以使用Key-Value Observing来观察每个正在运行的应用程序的terminated
属性。这样,您将在每个应用程序终止时收到通知,而无需轮询。
答案 1 :(得分:1)
一种方法是定期在计时器上调用isApplicationRunningWithName
,并等待该函数返回NO
。
答案 2 :(得分:0)
命令行timelimit
会让你发送一个关闭信号到应用程序,等待x秒,然后杀死它(或发送你喜欢的任何其他信号,杀死是-9)如果没有服从“警告” “信号。
(注意:我没有尝试在Mac上编译它,但我相信它是相当符合POSIX的代码,而不是特定于Linux的,因为它在BSD和其他人上运行。)