Accepting AppleEvents

kee nethery kee at
Thu Jan 27 01:32:57 EST 2005

-- I put this in the stack script of the main stack that is getting 
compiled into a Mac application 
on appleEvent theClass,theID
   global thisStackName
   if theClass is "misc" and theID is "dosc" then
     request appleEvent data -- get the content of the AppleEvent
     put it into thedata

     -- hard code the card ID and stack name that you want to be on.
     -- sometimes the appleevent handler is on this card, sometimes not, 
     -- insures that where ever it is, it comes back to where it should 
     put "myAppleEventAcceptingApplication" into theStackName
     put "1267" into theCardId
     if the name of this stack is theStackName AND /
       the id of this card = theCardId then
       go to card id theCardId of stack theStackName
     end if

     -- now that we know we are on the correct card, I can take the 
data, put it into a field
     put thedata into field "theData"
     -- and then press a button that will manipulate the data in that 
field, and the button will
     -- put the results into another field
     send doit to button "actionButton"

     -- grab the results from that field
     put field "theResult" into theResult

     -- this sends the results data back to the application that sent 
the appleEvent.
     reply theResult
     -- there are plenty of appleEvents that get sent to an application 
     -- if it is not the misc dosc combination, then pass it on so that 
     -- gets dealt with in the normal manner by Revolution.
     pass appleEvent
   end if
end appleEvent

I am sending data from HyperCard to this app using AppleEvents and 
having that data manipulated and then the results returned back to 
Hypercard. The AppleScript I am using in Hypercard is:

property thedata : []
property theresult : []

on mouseUp
end mouseUp

to doit()
	copy field "thedata" as text to thedata
	copy "" to field "theresult"
		tell application "myAppleEventAcceptingApplication"
			with timeout of 1200 seconds
				-- do script is appleevent of "dosc"
				do script thedata
			end timeout
			copy the result to theresult
		end tell
		copy theresult to field "theresult"
	on error errMsg number errNum
		copy "" & return & "" & return to theresult
		copy theresult to field "theresult"
	end try
	tell application "HyperCard"
	end tell
end doit

More information about the Use-livecode mailing list