The "send to program" feature of Revolution DOES NOT WORK! So don't waste a day as I did trying. Perhaps RunRev should either fix the problem or modify the dictionary to clarify the problem and provide the workaround below.
In the example below, I have hard coded the application and machine into the "sendAE" handler, but this could be feed into the handler via two additional parameters. You can get the application name and machine name by executing...
do "choose application" as AppleScript
Assume you have the following script in a button whose function is to send a doScript AppleEvent, passing "your data" to an application named "Target Program" on a remote machine named "Remote Mac".
on mouseUp
sendAE "misc", "dosc", "your data"
end mouseUpThen the following script resides in the button's card or stack script:
on sendAE pAEclass, pAEid, pAEdata
put "application" && quote & "Target Program" & quote && "of machine" && \
quote & "Remote Mac" & quote into tProgram put "tell" && tProgram & return into tAScript
put numToChar(199) & "event" && pAEclass & pAEid \
& numToChar(200) && quote & pAEdata & quote && "& return" & \
return after tAScript
put "end tell" & return after tAScript do tAScript as AppleScript
return the resultend sendAE
This exactly follows the example put forth by Jan Schenkel except for the addition of quote constants around the data portion, i.e., quote & pAEdata & quote (see original text from Jan below for more details).
Big thanks to Jan and others who contributed to this very solid workaround and saved the day for me.
Paul Stary
At 6:47 AM -0700 11/15/03, Rob Cozens quoted Jan Schenkel:
--It took me a while to test various combinations, but here are my conclusions for RunRev 1.1.1:
1) 'send to program ... with reply' - problem: results in an error upon execution - solution: omit the optional 'with result' clause - note: 'without reply' doesn't result in an error
2) 'answer program' doesn't work in MC/RR - known issue, due to limitations in the Carbon API - solution: do "choose application" as AppleScript - note: would still be handy if it were included
2) 'send to program' on the same machine works, but 'send to program' where the program is on a remote machine doesn't work - i tried it on a variation of machines, but the error is always "no such program" - solution: AppleScript to the rescue ! there is a little-known method of sending 'raw' apple events from within AppleScript, so the trick is to wrap it as an AppleScript of the form: tell application "Foo" of machine "Bar" <<event rIPCrIPL>> "Hello there!" & return end tell in which << and >> are to be replacd by their single-char equivalents for MacOS (ASCII- 199 and 200). So here's a sample code that works : on SelectProgramAndSendAE pAEclass, pAEid, pAEdata do "choose application" as AppleScript put the result into tResult if tResult is "execution error" then return "Cancel" else put tResult into tProgram -- looks like: application "Foo" of machine "Bar" put "tell" && tProgram & return into tAScript put numToChar(199) & "event" && pAEclass & pAEid \ & numToChar(200) && pAEdata && "& return" & \ return after tAScript put "end tell" & return after tAScript do tAScript as AppleScript return the result end SelectProgramAndSendAE - note: this was very messy to debug, and I crashed my iBook several times before I got it right. - warning: if the application on the other side is a RunRev-built one, make sure you 'pass' any AppleEvent message that you don't handle with a 'reply', or you risk freezing up the client-side computer.
I also tested the same code with pre-beta 4, with equal results. So in conclusion: yes, this is a definite bug, and I don't like the workaround, but at least there is one.
Scott or Kevin, could this be fixed for MetaCard 2.5 / RunRev 2.0?
Jan Schenkel.
Paul Stary Audio-Video Engineering Voice Mail: (949) 646-8877 Fax: (949) 515-3640 _______________________________________________ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
