Matthew Delves wrote:

Greetings and salutations,
Is there a way to pass arguments into an AppleScript file using
NSAppleScript and other cocoa/obj-c classes?

Yes, see NSAppleEventDescriptor and -[NSAppleScript executeAppleEvent:error:]. It's a bit of a chore for anything non- trivial, particularly since NSAppleEventDescriptor provides only limited bridging between Cocoa classes and AE types, although there are ways to simplify the process somewhat (e.g. see the CallAppleScriptHandler sample project in the objc-appscript svn repository).


The reason that I ask is I am wanting to find out the path to a song
in iTunes. I have a script which does this for hard coded values,
though am uncertain as to how to accomplish it (or if it is indeed
possible) using NSAppleScript.

NSAppleScript is best used in situations where you want users to supply the scripts to be executed (what's known as making your application attachable). For interacting with applications yourself, the lower-level Carbon Apple Event Manager (the AEBuild* functions and AESendMessage are okay for simple tasks, although they get dreadfully tedious for anything complex), or one of the high-level Cocoa-Apple event bridges. Example using objc-appscript:


#import "ITGlue/ITGlue.h"

// To create iTunes glue: osaglue -o ITGlue -p IT iTunes

int main (int argc, const char * argv[]) {
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
        NSError *error;
        NSString *trackName = @"Real Men";

ITApplication *itunes = [[ITApplication alloc] initWithBundleID: @"com.apple.itunes"];
        
ITReference *trackRef = [[[[itunes libraryPlaylists] at: 1] fileTracks] byName: trackName];
        id location = [[trackRef location] getItemWithError: &error];

        if ([location isKindOfClass: [ASAlias class]])
                NSLog(@"Track's file is at: %@", [location path]);
        else if ([location isEqual: [ASConstant missingValue]])
                NSLog(@"Track's file is missing.");
        else
NSLog(@"Some error occurred: %@", error); // e.g. -1728, object not found
        
        [itunes release];
        [pool drain];
        return 0;
}


HTH

has
--
Control AppleScriptable applications from Python, Ruby and ObjC:
http://appscript.sourceforge.net

_______________________________________________

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to