0

"open"現在どのアプリケーションがアプリケーションであるか(画面の最前線にあるアプリケーション)に応じて、さまざまなイベントを実行しようとしています。変数を使用してアプリケーションの名前を保存することができました。このコードを使用します。

tell application "System Events" 

    item 1 of (get name of processes whose frontmost is true)
    set openWindow to (get name of processes whose frontmost is true)
    do shell script "echo " & openWindow & " > /Users/name/temp/currentWindow.txt"

end tell

次に、このコードを使用して、開いているアプリケーションごとに異なるイベントを実行しようとしました

tell application "System Events"

  if openWindow = "AppleScript Editor" then
    display dialog "my variable: " & openWindow
  end if

end tell

ただし、このコードは何も実行しません。エラーメッセージなどは表示されませんが、コードにダイアログボックスが表示されません。ダイアログボックスのコードをコードの最初のセクションに配置すると、開いているアプリケーションの名前が表示されます。

これを機能させる方法についてのアイデアは、非常に役立ちます

4

2 に答える 2

1

あなたの問題を説明するには、このコードが原因です...

set openWindow to (get name of processes whose frontmost is true)

そのコードはアイテムのリストを返します。プロセス (複数) を要求したことに注意してください。複数のアイテムを取得できるため、applescript は、1 つ以上のアイテムが見つかったかどうかをリストとして提供します。奇妙なのは、この上の行でリストの「項目 1」を要求しているのに、何らかの理由でそのコード行で何もしていないことです。通常、私はこのようなコード行を書くので、アイテム1だけを取得します...

set openWindow to name of first process whose frontmost is true

とにかく、文字列 "AppleScript Editor" をリスト {"AppleScript Editor"} と比較することはできません。それらは等しくないため、if ステートメントは決して真ではありません。

表示ダイアログに文字列が表示されます。したがって、そのコードを if ステートメントの外に移動すると、applescript はリストを文字列に変換して表示できるほどスマートです。

つまり、リストを取得しているので、リストの項目にアクセスする必要があります。アイテムは文字列なので、1 つ取得し (この場合はアイテム 1 が必要です)、if ステートメントでそれを使用します。

うまくいけば、この説明から学ぶことができます。幸運を。

于 2013-01-13T22:15:20.183 に答える
0

最初のスクリプトでは、openWindow 変数を文字列にキャストします。

set openWindow to (get name of processes whose frontmost is true) as string
于 2013-01-13T09:23:15.313 に答える