GetProcessPID
was marked deprecated in OSX 10.9 along with the note:
Use the processIdentifier property of the appropriate NSRunningApplication object.
The problem is the constructing class methods for NSRunningApplication
do not have a way to get a NSRunningApplication
by a ProcessSerialNum
, only by PID or bundle name.
Bundle name is too ambiguous (there could be multiple instances) and I don't have the PID (it's what I want).
In OSX 10.9, is there a way to get the PID when you have a PSN?
Observe the NSWorkspaceDidLaunchApplicationNotification
notification.
In the callback, get the process serial number as follows:
NSDictionary* dictionary = [notification userInfo];
NSNumber* psnLow = [dictionary valueForKey: @"NSApplicationProcessSerialNumberLow"];
NSNumber* psnHigh = [dictionary valueForKey: @"NSApplicationProcessSerialNumberHigh"];
ProcessSerialNumber psn;
psn.highLongOfPSN = [psnHigh intValue];
psn.lowLongOfPSN = [psnLow intValue];
NSRunningApplication *newApplication = [dictionary valueForKey:NSWorkspaceApplicationKey];
source
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