How would I use NSRunningApplication? I have something opposite of that which is launching an app:
[[NSWorkspace sharedWorkspace] launchApplication:appName];
but I want to close one. I get an error when I debug the code for NSRunningApp which is this:
NSRunningApplication *selectedApp = appName;
[selectedApp terminate];
Is there something wrong? if there is please point it out and how to fix it.
You assign the variable selectedApp a NSString. Strings don't have the - (void)terminate method and therefore it fails. You have to get a NSRunningApplication instance pointing to the application.
NSWorkspace *sharedWorkspace = [NSWorkspace sharedWorkspace];
NSString *appPath = [sharedWorkspace fullPathForApplication:appName];
NSString *identifier = [[NSBundle bundleWithPath:appPath] bundleIdentifier];
NSArray *selectedApps =
[NSRunningApplication runningApplicationsWithBundleIdentifier:identifier];
// quit all
[selectedApps makeObjectsPerformSelector:@selector(terminate)];
What does appName refer to? If it literally refers to an NSString then that will not work.
Since NSRunningApplication is a class, you have to create an instance to send it an instance method as you would with any other class.
There are three class methods (see the docs) you can use to return an NSRunningApplication instance:
+ runningApplicationWithProcessIdentifier:
+ runningApplicationsWithBundleIdentifier:
+ currentApplication
Unless you want an NSRunningApplication instance based on the current application you are likely to find the first two class methods most useful.
You can then send the terminate message to the NSRunningApplication instance, which will attempt to quit the application that it has been configured for.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With