On Sep 4, 2014, at 11:25 PM, Jens Alfke <j...@mooseyard.com> wrote:

> On Sep 4, 2014, at 8:55 PM, Scott Ribe <scott_r...@elevated-dev.com> wrote:
>> 
>> It is as though the runningApplications method returns a cached list which 
>> is only updated when events are processed, thus I won't see the 
>> newly-launched app until the next pass through the runloop, thus cannot 
>> launch an app and immediately see it.
> 
> I think what's actually going on is that the app doesn't show up as running 
> until it's gotten far enough into its launch process to check in with the 
> WindowServer.
> 
> You're dealing with a multi-threaded system, so it makes total sense that an 
> app hasn't shown up a microsecond after you told the system to launch it.

No, it's as he suspected.  NSRunningApplication clearly documents that it 
doesn't update except during a pass through the run loop.  Similarly, 
-[NSWorkspace runningApplications] is clearly documented to have the same 
property (although I would think NSWorkspace could make an exception for 
applications that it launches itself).

Scott, as to your question:

> So, is there any way to get an NSRunningApplication instance for an app 
> immediately after launching it, without resorting to some vile nastiness…


-[NSWorkspace launchApplicationAtURL:options:configuration:error:] directly 
returns the NSRunningApplication that it launched.  You can get the URL using 
-URLForApplicationWithBundleIdentifier: in order to work from a bundle 
identifier, similarly to -launchAppWithBundleIdentifier:.

If for some reason that's not sufficient, you can try monitoring the 
NSWorkspaceWillLaunchApplicationNotification notification.  I'm not sure if 
that's synchronous — that it's posted before the -launch… or -open… method 
returns — but it might be, and it includes an NSRunningApplication in the 
notification's userInfo dictionary.

Regards,
Ken


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to