このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

StayOpenなASを動かす

発言者:大分県 安東
( Date Thursday, November 07, 1996 09:30:11 )


ども。

StayOpenなAS(例えばBeepのみ)を動かすにはどうすればいいのでしょうか ?

#ASのメッセージっていろいろあるのかなあ ? AE ?

あと、SimpleTextってScriptableではないんですね。(^^;

AEだと操作可能なのかなあ...でもAEがわからな〜い...とほほ....

田中求之 さんからのコメント
( Thursday, November 07, 1996 14:59:31 )

>StayOpenなAS(例えばBeepのみ)を動かす

これはどういう意味でしょうか?

StayOpen のアプリケーションとして作っておいたものに、コマンド(メッセージ)
をおくるということですか?

これであれば、たとえば

on beeper()
  beep
end beeper

というスクリプトを StayOpen の myBeeper というアプリケーションにしておくと

tell application "myBeeper"
  beeper()
end tell

でメッセージが送れます。StayOpen としてセーブしてもオブジェクトですから、通常の
オブジェクト同様に tell でターゲットを指定してメッセージを送ればよいわけです。


>あと、SimpleTextってScriptableではないんですね。

ちがいます。

大分県 安東 さんからのコメント
( Thursday, November 07, 1996 17:08:37 )

アドバイスありがとうございます。

実はデレクタからNetscapeなどを呼び出すようなことをやってまして
その間を取り持つためのASを作成しているのですが、デレクタから、
ASを新たに呼びし、runすると目的のスクリプトは動作するのですが、
runしたままの状態だと動作しないのです。
(いちいち起動しなおすと遅いので)

で何らかのハンドラを書けばデレクタのopenコマンドをキャッチできる
のかなあと思ったのです。

デレクタでASが使えるといいんだけど...(^^;;

#いろんな意味でHyperCard3.xが待ちどうしいですね。(^^

今後とも宜しくお願いします。



田中求之 さんからのコメント
( Friday, November 08, 1996 16:44:09 )

>ASを新たに呼びし、runすると目的のスクリプトは動作するのですが、
>runしたままの状態だと動作しないのです。

??? 状況が良く分からないのですが、ディレクターからは run メッセージが
送られているのですか? それとも open メッセージですか? いずれにせよ、
ハンドラーを書いておけばよいだけのことですが。

たとえ Director が AppleEvent しか送れないのであっても、AS は AppleEvent
を受けとめられますので、スクリプトは書けるはずです。


大分県 安東 さんからのコメント
( Monday, November 11, 1996 09:54:43 )

申し訳けありません。(^;)

on open
  display dialog "open"
end open

on run
  display dialog "run"
end run

というテスト用ASを作りStayOpenなAppにしてデレクタの
Openコマンドで呼び出したところ、1回目(ASが起動して
いない)は「run」と表示されましたが、2回目(起動し
ている)は何も表示されません。

2回目からはどんなメッセージが送られているのかなあ ?

#ASのメッセージって、idle,open,print,quit,runしか
#ないんですよね。

cgiのようにAEを受けて〜というような記述が必要になる
のかなあ...


田中求之 さんからのコメント
( Monday, November 11, 1996 11:11:52 )

ディレクターを持っていないので詳しいことはわかりませんが、Open コマンド
で他のアプリケーションを起動する場合に、対象のアプリケーションに直接
run メッセージを送るのではなく、Finder に対して対象のアプリケーション
を起動するようにメッセージを送っているのでしょう(こうするのが普通です
から)。

このため、StayOpen になっているアプリケーションの場合、2度目からは
run メッセージが送られずに、単にフロント・プロセス(一番手前になっている
アプリケーション)へのスイッチが Finder によって行われているだけなのだと
思います。

ですから、やはり、その都度起動するタイプのアプリケーションにしておくか、
あるいは xObject によって望みの機能を実現するようにしたほうが良いで
しょうね。

大分県 安東 さんからのコメント
( Monday, November 11, 1996 11:52:46 )

>>Finderに対して...普通...

なるほど、そういう訳なんですね。

勉強になりました。今後とも宜しくお願いします。

大分県 安東 さんからのコメント
( Wednesday, February 12, 1997 12:54:50 )

アプリケーションにどのようなEventが送られているか見る方法です。

AppleEvent Monitorなどスタックがあるので、これをApp化して、クリ
エータコードを目的のアプリケーションと同じにすれば、見ることが
出来るようです。

#hODAさん、Appありがとうございました。でもミスで受取り損ねました。
#(メールを出したのですが、エラーで戻って来てしまいました。)

失礼しました。