Pierce Freeman wrote:

I am attempting to create a little application that will take an application name from the user, and then close it for them. I am attempting do this by getting the string in Cocoa, then passing this to AppleScript... But I don't
know if Cocoa can pass variables to AppleScript.


There are ways of passing values to AppleScript, and there are ways of sending Apple events directly from ObjC. Those are probably overkill for sending a basic 'quit' event though, which is a simple cut-n-paste solution. Here's what I use:

#include <Carbon/Carbon.h>

OSStatus QuitApplicationProcessWithPID(pid_t pid) {
   AppleEvent evt, res;
   AEDesc errDesc;
   OSStatus err;

   // build and send a 'quit' event
   err = AEBuildAppleEvent(kCoreEventClass, kAEQuitApplication,
                           typeKernelProcessID,
                           &pid, sizeof(pid),
                           kAutoGenerateReturnID,
                           kAnyTransactionID,
                           &evt, NULL, "");
   if (err) return err;
   err = AESendMessage(&evt, &res, kAEWaitReply, kAEDefaultTimeout);
   AEDisposeDesc(&evt);
   // note: process may quit without replying
   if (err == connectionInvalid) return noErr;
   if (err) return err;
// check if reply event contains an error number, e.g. userCanceledErr
   err = AEGetParamDesc(&res, keyErrorNumber, typeSInt32, &errDesc);
   if (err == noErr) {
       AEGetDescData(&errDesc, &err, sizeof(err));
       AEDisposeDesc(&res);
   } else if (err == errAEDescNotFound)
       err = noErr;
   return err;
}


Use -[NSWorkspace launchedApplications] to look up the application's process id based on its name.

HTH

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

_______________________________________________

Cocoa-dev mailing list ([email protected])

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