Rev && appleScript

Ben Rubinstein benr at cogapp.com
Tue Jan 13 15:06:52 CST 2009


Timothy Miller wrote:
> When I
> 
> do <container> as "applescript"
> 
> is it possible for applescript to pass a variable or function or 
> something back to rev?
> 
> For instance, just to keep it simple, could I somehow use "the result" 
> from appleScript in a Rev script?

Yes.  If you test "the result" immediately after 'do'ing some applescript, it 
will contain the result the of the applescript - or an error.

So for example
	do "get 2 + 3" as applescript; put the result

is a very slow way to add; while,

	do "get 2 + " as applescript; put the result

will put "compiler error".

> If someone can applescript off the cuff and is feeling generous, I want 
> to use Rev to check if "/applications/firefox.app" is running. 
> Suggestions received gratefully.
> 
> I tried checking the openProcesses, but it doesn't seem to work 
> reliably, and it doesn't work if I launch the application outside of Rev.

There might well be a (better) way of doing this natively - and I suspect that 
failing that you could do it better using the shell command - but to answer 
your question, I happen to have just been looking at a really ancient stack 
dating back to Mac OS 9, which included these functions:

    function theProcesses
      put "set res to" && quote & quote & return \
          & "repeat with p in the processes" & return \
          & " set res to res & (the name of p) & return" & return \
          & "end repeat" & return \
          & "return res" & return \
          into scrpt
      get doAs(scrpt, "Finder")
      replace numtochar(13) with return in it
      delete first char of it -- quote
      delete last char of it -- quote
      return it
    end theProcesses

    function doAs cod, proc
      put "tell application" && quote & proc & quote & return into asCom
      put cod after asCom
      if last char of cod <> return then put return after asCom
      put "end tell" & return after asCom
      do asCom as applescript
      return the result
    end doAs

HTH,

Ben




More information about the use-livecode mailing list