0

私が書いた2つの航空アプリケーションがあります。10 秒後に自動的にフルスクリーンになります。それまでに、適切なディスプレイに送信する必要があります。「app_1」はディスプレイ 1 で実行する必要があり、「app_2」はディスプレイ 2 で実行する必要があります。

基本的に、私はこのコードを持っています:

do shell script "cd /Applications/app_1.app/Contents/MacOS/ ; open app_1;"

これは私にとって完璧に機能します。どちらのアプリもそのように起動され、アプリがまだ開いていないことを確認し、開いている場合は閉じるためのコードがいくつかあります。

起動後にアプリを配置するスクリプトを追加しようとしました:

do shell script "cd /Applications/app_1.app/Contents/MacOS/ ; open app_1;"
tell first window of application "app_1" to set bounds to {0,0,1920,1080}

これは私にエラーを与えます:

app_1 got an error: Can't set bounds of window 1 to {0,0,1920,1080}  

set bounds起動時にアプリケーションがまだ起動していない場合に備えて、 の前に数秒の遅延を追加しようとしましたがset bounds、これは何も変更しませんでした。

{100,100,200,200}また、画面座標が間違っているかどうかを確認するために、境界を設定しようとしまし{100,100,200,200}たが、元の 1920x1080 座標の代わりに、まったく同じエラーが発生しました。

誰でもこれについて何か洞察がありますか?私は数時間グーグルで解決策を見つけようとしています。

4

1 に答える 1

1

アプリが標準の「ウィンドウ」クラスを公開していないようです。AIR アプリがこれを自動的に処理するようになっているかどうかはわかりませんが、機能していない場合は、デバッグする必要があります。

しかし、もう 1 つの方法は、UI スクリプトを使用してウィンドウを外部から制御することです。これの代わりに:

tell first window of application "app_1" to set bounds to {0,0,1920,1080}

これを行う:

tell application "System Events"
  set position of first window of application process "app_1" to {0, 0}
  set size of first window of application process "app_1" to {1920,1080}
end tell

ただし、これは、システム環境設定のユニバーサル アクセス ペインに移動し、「補助デバイスのアクセスを有効にする」をオンにした場合にのみ機能します (または、API、「sudo touch /var/db/.AccessibilityAPIEnabled」などを介して同じことを行いました)。 )。

于 2012-05-16T02:25:07.893 に答える