プロが教える店舗&オフィスのセキュリティ対策術

現在appleスクリプトを勉強中の者です。appleスクリプトを打つときに疑問が出てきてなかなかネットにも回答が乗っていなかったので皆様の知恵をお借りできないかと投稿しました。appleスクリプトを打つ時に通常は
tell application "アプリケーション名"
end tell
と書くのですが、このやり方だと、特定のアプリケーションにたいしては有効なスクリプトがかけるのですが、非特定のアプリケーションにたいしては有効な書き方ができません。これを例えば最前列のアプリケーション名自動的に取得して、命令を与えるという形にしたい場合はどうすればよいのでしょうか?もしくは、appleスクリプトではそのような方法はとれず、アプリケーションごとにスクリプトを書き換えなければいけないのでしょうか?この問題についてもしわかる方がいらっしゃいましたらアドバイスよろしくお願いします。

A 回答 (2件)

>これを例えば最前列のアプリケーション名自動的に取得して、命令を与えるという形にしたい場合はどうすればよいのでしょうか?



もし、そうした書き方ができたとして、そのアプリケーションがAppleScriptに対応していない場合はどうなるでしょうか? アプリケーションによって、対応する命令などは違うということを考えないといけません。

そうなると、不特定のアプリにtell applicationを使ってAppleScriptの処理を送り実行させるということはできない、ということになります。(正確にはちょっと違いますが、まぁそう思って間違いないです)

ではどうするか? アプリケーションではなく、System Eventsに対してAppleScriptを送って処理するという方法があります。System Eventsは、バックグラウンドで動くアプリケーションで、GUIを外部から遠隔操作するための機能がまとめられています。これにより、マウスを操作したりキーを操作したりするための命令類が用意されているので、これでアプリケーションを操作できます。

一度、System Eventsの命令類を用語説明から調べてみてはいかがでしょう。
    • good
    • 0
この回答へのお礼

アプリケーションに対応してるかどうかを考えなければいけないんですね!System EventsにたいしてAppleSvriptを送って制御ですか。。やってみます!
すごく参考になりました!ありがとうございます。

お礼日時:2007/10/06 04:56

frontmost applicationみたいなキーワードで検索すると、いろいろ見つかりますよ。


http://www1.odn.ne.jp/~cge02410/backnumber/2006/ …

tell application currApp
  ほげほげ
end tell

としたい場合には、currAppには質問にあるようにアプリケーションの名前でもいいですけど、アプリケーションのパスとか他にも指定方法がいくつかあるようです。

アプリケーションの名前を得たい場合は

set currApp to short name of (info for (path to frontmost application))

とか

set currApp to name of (info for (path to frontmost application))
if currApp ends with ".app" then set currApp to text 1 thru -5 of currApp

みたいな感じにすればいいようです。short nameはMac OS X 10.4以降?みたいで、代わりにnameとしたりすれば、Mac OS 9でも動きます。

set currApp to path to frontmost application as string

とすればアプリケーションのパスが得られて、旧Mac OSでも動作可能です。

# AppleScriptの質問は詳しい方がいるApple Discussionsやメーリングリスト等に質問した方がより適確な回答が得られるような気もします
Mac OS X v10.4 Tiger > Mac OS X Technologies > AppleScript
http://discussions.info.apple.co.jp/
http://discussions.apple.com/forum.jspa?forumID= …
    • good
    • 0
この回答へのお礼

そうなんです!こういうのを探していたんです!なるほど、frontmostで調べるとたくさん出てきますね!私は英語が苦手だったので、こういう単語で調べるって事に気がつかなかったです。ありがとうございました!

お礼日時:2007/10/06 05:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!