7

MacBook Pro Retina で解像度を切り替えるタスクを自動化する AppleScript を作成したいと考えています。

インターネットで「applescript システム設定」を検索すると、いくつかの設定が表示されているページに出会いました。スケーリングされた解像度は新しいものであるため、文書化されていません。

これは、私が AppleScript で抱えているより大きな問題をもたらします (実際にプログラムしたことのないものをコピーして貼り付けることは別として)。たとえば、システム環境設定オブジェクトが実際には「システム環境設定」と呼ばれ、「ペイン」と呼ばれるオブジェクトがあり、ID があり、公開 ID が「com.apple.preference」であることを示すドキュメントはどこにありますか。公開"?

すべてのプログラムにはある種の「秘密の」ドキュメントが必要であり、それらはすべてのオブジェクト階層と可能なアクションをマッピングする巨大なものでなければならないようです。結局のところ、AppleScript のコアは最小限であり、そのようなプログラムを操作するだけです。しかし、それらはどこに文書化されていますか?

4

4 に答える 4

11

これがどのように機能するかです:

たとえば、システム環境設定オブジェクトが実際には「システム環境設定」と呼ばれていることを示すドキュメントはどこにありますか

それがアプリケーションの正確な名前であるため、オブジェクトは「システム設定」と呼ばれます。これで Applescript に伝えているのは、システム環境設定( )という名前のアプリケーションと話したいということです。tell application "System Preferences" ...

「ペイン」と呼ばれるオブジェクトがあること

今は楽しい部分です。ライブラリ ウィンドウを開くと (Applescript エディタで [ウィンドウ] > [ライブラリ])、利用可能なスクリプト可能なアプリケーションのコレクションがあることがわかります。問題は、'システム環境設定' がそこにないことです。それでは、それを見つけてみましょう: [ファイル] > [辞書を開く] > [システム環境設定]。これで、アプリの利用可能なすべてのクラス/コマンド/プロパティをドリルダウンできるウィンドウと、関連するドキュメントを含む分割ウィンドウが表示されます (クリックSSystem Preferencesすると表示Cpaneされ、これをクリックすると表示されますPid) . もう一度ペインのIDは、ペインの名前になります(小文字で連結されています-これに関する厳密な定義については、まだドキュメントを調べています)。これで始められることを願っています。


S:Suite C:Class P:Property (円の中の「C」は を表しますCommand)

于 2012-07-28T11:19:39.800 に答える
7

その通りです。各プログラムには、applescript に関する独自のドキュメントがあります。これは AppleScript 辞書と呼ばれます。次のいずれかの方法で、任意のアプリケーションの辞書を表示できます...

1) AppleScript エディタの [ファイル] メニューで、[辞書を開く...] を選択します。そこからアプリケーションを選択すると、その辞書が表示されます。

2) アプリケーションを AppleScript エディタのアイコンにドラッグ アンド ドロップします。

3) 高速アクセスのための頻繁に使用される辞書のリストがあります。AppleScript エディタの [ウィンドウ] メニューで [ライブラリ] を選択します。そのリスト内のアプリケーションをダブルクリックできます。リストに必要な辞書が含まれるように、そのリストを変更することもできます。

幸運を。

于 2012-07-28T11:18:05.170 に答える
0

別の問題がありますが、私のスクリプトにあなたの問題に関するヒントがあるので、私の質問を見てください。

方法: チェック マークを表示する、メニュー項目を無効にする、メニュー バーを更新する

例えば:

tell application "System Preferences"
    reveal anchor "displaysDisplayTab" of pane id "com.apple.preference.displays"
end tell

このコードは、システム設定の解像度設定に直接入る必要があります。

次に、ペインのすべての UI 要素を回復するコードを作成して、どのアクションをトリガーするかを決めることができます。このようなものも動作するはずです:

tell application "System Events"
tell application process "System Preferences"
    set frontmost to true
    delay 1
    return every UI element of front window
    return name of every UI element of front window
end tell

終わりを告げる

それが役に立てば幸い

于 2018-03-23T15:05:07.000 に答える