現在appleスクリプトを勉強中の者です。appleスクリプトを打つときに疑問が出てきてなかなかネットにも回答が乗っていなかったので皆様の知恵をお借りできないかと投稿しました。appleスクリプトを打つ時に通常は
tell application "アプリケーション名"
end tell
と書くのですが、このやり方だと、特定のアプリケーションにたいしては有効なスクリプトがかけるのですが、非特定のアプリケーションにたいしては有効な書き方ができません。これを例えば最前列のアプリケーション名自動的に取得して、命令を与えるという形にしたい場合はどうすればよいのでしょうか?もしくは、appleスクリプトではそのような方法はとれず、アプリケーションごとにスクリプトを書き換えなければいけないのでしょうか?この問題についてもしわかる方がいらっしゃいましたらアドバイスよろしくお願いします。
No.2
- 回答日時:
>これを例えば最前列のアプリケーション名自動的に取得して、命令を与えるという形にしたい場合はどうすればよいのでしょうか?
もし、そうした書き方ができたとして、そのアプリケーションがAppleScriptに対応していない場合はどうなるでしょうか? アプリケーションによって、対応する命令などは違うということを考えないといけません。
そうなると、不特定のアプリにtell applicationを使ってAppleScriptの処理を送り実行させるということはできない、ということになります。(正確にはちょっと違いますが、まぁそう思って間違いないです)
ではどうするか? アプリケーションではなく、System Eventsに対してAppleScriptを送って処理するという方法があります。System Eventsは、バックグラウンドで動くアプリケーションで、GUIを外部から遠隔操作するための機能がまとめられています。これにより、マウスを操作したりキーを操作したりするための命令類が用意されているので、これでアプリケーションを操作できます。
一度、System Eventsの命令類を用語説明から調べてみてはいかがでしょう。
アプリケーションに対応してるかどうかを考えなければいけないんですね!System EventsにたいしてAppleSvriptを送って制御ですか。。やってみます!
すごく参考になりました!ありがとうございます。
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で調べるとたくさん出てきますね!私は英語が苦手だったので、こういう単語で調べるって事に気がつかなかったです。ありがとうございました!
お探しの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ランキング
-
vba クリップボードクリアにつ...
-
IISワーカープロセスが原因でCP...
-
AccessとVBの違いについて
-
帳票出力について
-
C#のWindowsフォームアプリケー...
-
プラグインとパッチの違いは?
-
作ったアプレットを自動でアプ...
-
ASP(VB).NETでの背景色変更
-
予約システムの開発ツール
-
JSPファイルで生じるエラーをど...
-
gitでバージョン指定してダウン...
-
javaのジェネリックスでTとEの...
-
javaでの#if 0 #endif文
-
UnknownHostException
-
エクリプスのプログラミングに...
-
Javaでのエラーについて
-
データベースのデータをTextBox...
-
java と javax の違いは?
-
マイクラ Ender IO 入れたらク...
-
CrystalReportsのバージョン確...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
IISワーカープロセスが原因でCP...
-
VBのWPFとはなんでしょうか?
-
unzip32.dllの利用について(64b...
-
プラグインとパッチの違いは?
-
意味が分からないエラー
-
帳票出力について
-
java3dが動かない
-
32ビットのアプリで、64ビットO...
-
ASP(VB).NETでの背景色変更
-
ログオフ中でもアプリケーショ...
-
C#のメモリマップドファイルに...
-
AccessとVBの違いについて
-
Java でネイティブアプリケーシ...
-
このVBAでExcelアプリケーショ...
-
HTMLアプリケーションの作成
-
[VB.2005]クライアントからWEB...
-
C++からC#へ
-
JAVAプログラムをWEB表示させる...
-
SurfaceViewの一時停止や再開方法
おすすめ情報