Does Send To Program Work?
Jan Schenkel
janschenkel at yahoo.com
Sun Mar 16 07:43:10 EST 2003
--- Rob Cozens <rcozens at pon.net> wrote:
> Hi All,
>
> I'd like to hear from one person who can confirm
> that "send .. to
> program" works.
>
> Scenario:
>
> I start a RunRev standalone, "IPC_Server".
>
> I start RunRev on the same computer.
>
> From the message box I type 'send "Quit" to program
> "IPC_Server"'
> result: no such program
>
> I launch clip2Gif and type 'send "Quit" to program
> "clip2Gif"'
> result: no such program
>
> Again from the message box, 'send "Quit" to program
> "Finder"'
> result: got error -1702 when sending apple event
> [1702 = invald data]
>
> Mac OS 9, RR v1.5A7
> --
>
> Rob Cozens
Hi Rob,
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.
=====
"As we grow older, we grow both wiser and more foolish at the same time." (La Rochefoucauld)
__________________________________________________
Do you Yahoo!?
Yahoo! Web Hosting - establish your business online
http://webhosting.yahoo.com
More information about the use-livecode
mailing list