1

別の別のアプリケーションを開き、そのアプリケーションのプロジェクト/ドキュメントを繰り返し開いてから、アプリケーションを閉じたいと思います。また、ドキュメントを開いているときにポップアップ表示されたすべてのモーダルダイアログと非モーダルダイアログを閉じたいと思います。アプリケーションが失敗/クラッシュした場合に備えて、クラッシュダイアログを含むすべてのダイアログを閉じたい。

これを達成するためにココアまたはアップルスクリプトを使用する最良の方法は何であり、そこからより詳細な情報を得ることができますか?

4

1 に答える 1

2

アプリにスクリプトインターフェイスがある場合は、もちろんそれを行うのが最善の方法です。

通常、AppleScriptで反復するのではなく、クエリのすべての結果を操作する必要があります。

たとえば、「標準スイート」を実装するほとんどすべてのアプリケーションでは、次のことができます。

tell app "TextEdit" to close windows

これは、次の場合よりもはるかに簡単です(そして、より高速で、ターゲットアプリに正しく実装される可能性が高くなります)。

tell app "TextEdit"
  repeat with theWindow in windows
    close theWindow
  end repeat
end tell

もちろん、これにより、変更の保存/破棄ダイアログがポップアップ表示される場合があります。また、アプリケーションのユーザーモデルによっては、ダイアログやインスペクターなどがスキップまたは含まれる場合があります。

さらに重要なことに、アプリがスクリプト(および標準スイート)をサポートしていない場合は機能しません。

また、クラッシュレポートを閉じることにはまったく役立ちません。そのウィンドウは、元のアプリケーションではなくCrashReporterによって所有されます(これは、元のアプリケーションと通信できなくなったため、元のアプリケーションと通信できなくなったため、良いことです… )。

別の方法は、システムイベントのUIスクリプト機能です。これは、補助アクセスが有効になっている場合にのみ機能します。また、どのウィンドウを処理したいのか、どのコントロールが必要なのかを判断するのは少し面倒です。

例えば:

tell app "System Events"
  click button 1 of windows of application process "TextEdit"
end tell

これは、テキストエディットプロセスが所有するすべてのウィンドウ(種類に関係なく)を検索し、そのウィンドウの最初のボタン(赤い閉じるボタン)のクリックをシミュレートすることで機能します。

「AppleScriptUIスクリプティング」をグーグルで検索すると、さまざまなガイドが見つかるはずです。私が最初に見つけたヒットはhttp://www.makeuseof.com/tag/applescripts-ui-scripting-mac/で、開始するのに適切な場所のようです。

于 2012-06-08T00:04:30.353 に答える