2017-08-12 14 views
0

ASにはかなり新しいですが、私は似たような質問に出くわしていません。 AppleScriptを使用して、アプリケーションウィンドウのUIから情報を取得しています。ウィンドウには値 "Name"の静的テキストxがあり、静的テキストx + 1( "John Smith")となる次の静的テキストの値を取得したいとします。しかし、xの値はそれぞれの場合によって異なりますので、静的テキストを参照することはできません。特定の値(AppleScript)を持つ静的テキストのインデックス番号を取得

私の解決策は、ウィンドウ内で利用可能なすべての静的テキストの値を取得し、それをリストに追加することです。次に、値 "Name"を持つ最初のアイテムを見つけ、そのアイテム+ 1を参照して、実際の名前を取得します。しかし、ウィンドウには非常に多くの静的テキストが含まれる可能性があるため、このメソッドには不必要な時間がかかります。

set MyList to {} 
tell application "System Events" to tell process "cBK" to set y to count static text of scroll area 2 of splitter group 1 of window 1 
repeat with x from 1 to y 
tell application "System Events" to tell process "cBK" to set end of MyList to value of static text x of scroll area 2 of splitter group 1 of window 1 
end repeat 
on findFirst(lst, val) 
local lst, val, i 
try 
    if lst's class is not list then error "not a list." number -1704 
    if {val} is not in lst then return 0 
    script k 
     property l : lst 
    end script 
    repeat with i from 1 to count of k's l 
     if k's l's item i is val then return i 
    end repeat 
on error eMsg number eNum 
    error "Can't findFirst: " & eMsg number eNum 
end try 
end findFirst 
set Name to item (findFirst(MyList, "Name") + 1) of MyList 

一定値と静的なテキストxのXを取得するための簡単な方法はありますので、私は、静的なテキストのx + 1の値を得ることができますか?

答えて

1

リスト内のすべての静的テキスト値を1つの指示でフロントウィンドウから取得できます。そのリストを検索し、見つかった場合は次の項目を取得します。最後のテストでは、静的テキストで値が見つかったかどうかをチェックし、そうでない場合は ""を返します。

関連する問題