• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Problem with 'launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:'???
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problem with 'launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:'???


  • Subject: Re: Problem with 'launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:'???
  • From: Ken Thomases <email@hidden>
  • Date: Thu, 23 Apr 2009 20:11:03 -0500

On Apr 23, 2009, at 7:50 PM, Laurent Daudelin wrote:

I'm trying to use this NSWorkspace method to launch an application and print a document. I provide it with a FSRef-based NSAppleEventDescriptor but the only thing the workspace does is launching the app. Here is part of the code:

NSURL *documentURL = [[[NSURL alloc] initFileURLWithPath:[[openPanel filenames] objectAtIndex:c]] autorelease];
NSURL *applicationURL = NULL;
OSStatus resultCode = LSGetApplicationForURL((CFURLRef)documentURL, kLSRolesAll, NULL, (CFURLRef *)&applicationURL);
if (resultCode != noErr)
{
NSRunAlertPanel(NULL, [NSString stringWithFormat:@"%@ '%@'", NSLocalizedString(@"CouldntFindAppForDocument", @""), [[[openPanel filenames] objectAtIndex:c] lastPathComponent]], NULL, NULL, NULL);
return ;
}
NSBundle *appBundle = [NSBundle bundleWithPath:[applicationURL path]];
BOOL couldLaunchApp = NO;
NSAppleEventDescriptor *descriptor = [self descriptorWithPath: [[openPanel filenames] objectAtIndex:c]];
if (descriptor != NULL)
couldLaunchApp = [[NSWorkspace sharedWorkspace] launchAppWithBundleIdentifier:[appBundle bundleIdentifier] options:NSWorkspaceLaunchAndPrint additionalEventParamDescriptor:descriptor launchIdentifier:NULL];
if ( ! couldLaunchApp)
NSRunAlertPanel(NULL, [NSString stringWithFormat:@"%@ '%@'", NSLocalizedString(@"CouldntAddDocumentToReader", @""), [[[openPanel filenames] objectAtIndex:c] lastPathComponent]], NULL, NULL, NULL);


What am I doing wrong?

I don't recommend using a -launchApp... method to act on a document.

To print a document, I recommend using - openURLs:withAppBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifiers : passing NSWorkspaceLaunchAndPrint in the options. Also, pass nil for the application bundle identifier, since you just want to use the default. That avoids the overly complicated use of LSGetApplicationForURL -> URL -> path -> NSBundle -> bundle ID. Also, the above code snippet snippet seems to be in a loop over the array of filenames returned by an open panel. With this method, you can convert that to an array of URLs and make just one NSWorkspace method call to print them all in their appropriate applications.

Don't bother passing an additionalEventParamDescriptor. It's hard to get right, and I've seen evidence that it isn't even passed properly. (I've dropped down to direct use of Launch Services, which did pass the parameter correctly.)

Cheers,
Ken

_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:
This email sent to email@hidden


  • Follow-Ups:
    • Re: Problem with 'launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:'???
      • From: Laurent Daudelin <email@hidden>
References: 
 >Problem with 'launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:'??? (From: Laurent Daudelin <email@hidden>)

  • Prev by Date: Problem with 'launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:'???
  • Next by Date: Re: Best practice regarding display of many similar items in a lengthy view
  • Previous by thread: Problem with 'launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:'???
  • Next by thread: Re: Problem with 'launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:'???
  • Index(es):
    • Date
    • Thread