現在appleスクリプトを勉強中の者です。appleスクリプトを打つときに疑問が出てきてなかなかネットにも回答が乗っていなかったので皆様の知恵をお借りできないかと投稿しました。appleスクリプトを打つ時に通常は
tell application "アプリケーション名"
end tell
と書くのですが、このやり方だと、特定のアプリケーションにたいしては有効なスクリプトがかけるのですが、非特定のアプリケーションにたいしては有効な書き方ができません。これを例えば最前列のアプリケーション名自動的に取得して、命令を与えるという形にしたい場合はどうすればよいのでしょうか?もしくは、appleスクリプトではそのような方法はとれず、アプリケーションごとにスクリプトを書き換えなければいけないのでしょうか?この問題についてもしわかる方がいらっしゃいましたらアドバイスよろしくお願いします。
No.1ベストアンサー
- 回答日時:
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= …
そうなんです!こういうのを探していたんです!なるほど、frontmostで調べるとたくさん出てきますね!私は英語が苦手だったので、こういう単語で調べるって事に気がつかなかったです。ありがとうございました!
No.2
- 回答日時:
>これを例えば最前列のアプリケーション名自動的に取得して、命令を与えるという形にしたい場合はどうすればよいのでしょうか?
もし、そうした書き方ができたとして、そのアプリケーションがAppleScriptに対応していない場合はどうなるでしょうか? アプリケーションによって、対応する命令などは違うということを考えないといけません。
そうなると、不特定のアプリにtell applicationを使ってAppleScriptの処理を送り実行させるということはできない、ということになります。(正確にはちょっと違いますが、まぁそう思って間違いないです)
ではどうするか? アプリケーションではなく、System Eventsに対してAppleScriptを送って処理するという方法があります。System Eventsは、バックグラウンドで動くアプリケーションで、GUIを外部から遠隔操作するための機能がまとめられています。これにより、マウスを操作したりキーを操作したりするための命令類が用意されているので、これでアプリケーションを操作できます。
一度、System Eventsの命令類を用語説明から調べてみてはいかがでしょう。
アプリケーションに対応してるかどうかを考えなければいけないんですね!System EventsにたいしてAppleSvriptを送って制御ですか。。やってみます!
すごく参考になりました!ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux redmineにメールを飛ばす方法 1 2022/09/13 22:02
- マウス・キーボード 何故、ローマ字や英語を全角で打つ? 5 2022/05/15 09:36
- iPod・ウォークマン・音楽プレーヤー Windows10でwindows8やwindows7のアプリケーションを動かしたい 6 2022/09/20 23:16
- ネットワーク OSI参照モデルの各層の役割がわかりません。 3 2023/04/21 21:12
- その他(プログラミング・Web制作) awkのtoupper() 1 2022/10/21 20:39
- PostgreSQL postgreSQLをbashで実行する際に「MORE」表示をなくす方法 1 2023/05/08 21:42
- 英語 「install and/or execute an application」の訳し方 2 2022/04/05 11:11
- iPhone(アイフォーン) Apple IDを乗っ取られてしまい、乗っ取られたIDは、 Appleカスタマーセンターへ連絡し事な 1 2023/01/22 07:34
- 英語 英語に詳しい方に質問です。 2 2022/06/21 15:33
- JavaScript イラストレーター、縦中横のショートカットをスクリプトを使って作成する方法 1 2023/04/19 11:15
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C++からC#へ
-
IISワーカープロセスが原因でCP...
-
vba クリップボードクリアにつ...
-
C#のメモリマップドファイルに...
-
プラグインとパッチの違いは?
-
予約システムの開発ツール
-
unzip32.dllの利用について(64b...
-
JavaとAndroidアプリ(Java)違...
-
サーブレットで電卓をつくる
-
JAVA基礎の課題で自動販売機
-
gitでバージョン指定してダウン...
-
Java新人研修の課題についてア...
-
PowerBuilderの知識が必要です。
-
FCDUtil
-
Pythonを勉強する道のり
-
Selenium/VBA/Chrome エラーで...
-
JavaMailを使う前のTomcatの設定
-
javacとjavaのバージョン違い
-
コマンドボタンの文字が消える!
-
sourceforge.jpのソースコード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
IISワーカープロセスが原因でCP...
-
unzip32.dllの利用について(64b...
-
プラグインとパッチの違いは?
-
AccessとVBの違いについて
-
C#のメモリマップドファイルに...
-
appleスクリプトでアプリケーシ...
-
作ったアプレットを自動でアプ...
-
[VB.2005]クライアントからWEB...
-
帳票出力について
-
JavaでMDB
-
java起動時の日本語引数文字化...
-
C++からC#へ
-
VBのWPFとはなんでしょうか?
-
JavaアプレットはWebブラウザ上...
-
32ビットのアプリで、64ビットO...
-
ASP(VB).NETでの背景色変更
-
C#のWindowsフォームアプリケー...
-
Javaの種類ってどんだけあるの?
-
java3dが動かない
おすすめ情報