3

本を表示するウィンドウがあります。下の 2 つの小さいボックスには、開いている本のページ番号と巻の情報があります。次のようにして、その情報を簡単に取得できます。

ControlGetText, volume, ThunderRT6TextBox3      
ControlGetText, page, ThunderRT6TextBox2

次に、スクリプトでマウス ポインターをボタンに移動させます。それをクリックすると、新しいウィンドウが開きます。そのウィンドウには、出版社、著者名、版など、書籍に関連するテキスト情報がさらに表示されます。その情報を取得したいと思います。しかし、同じ戦略を試してもうまくいきません。例えば:

ControlGetText, data, RichTextWndClass3

2 つのケースの唯一の違いは、これら 2 つの小さなボックスが編集可能であり、このウィンドウが静的であるのに対し、テキストを入力できることです。

次のような他の多くのオプションを試しまし SendEvent ^a た。これは、すべてを選択する必要があるcontrol + aと同等です。一時停止を入れてみましたが、決して選択されません。そのウィンドウを手動でダブルクリックするスクリプトを試しました。それは機能し、1つの単語がそのように選択されます。それでも SendEvent ^a は何もしません。ただし、SendEvent ^{insert} を実行すると、選択した単語がクリップボードにコピーされます。

より多くの組み合わせを試しました:

ControlSend ahk_class ThunderRT6FormDC, ^a
ControlSend ClassNN RichTextWndClass3, ^a

ControlSend ThunderRT6FormDC, ^a
ControlSend RichTextWndClass3, ^a

それらのどれも機能しません。すべてのテキスト選択がそのウィンドウに表示されるわけではありません。

私に残っている唯一の選択肢は、スクリプトにテキスト全体の手動選択をさせることです。ただし、これは遅く、非常にばかげています。さらに、「Visible Window Text」セクションの下の Window Spy には、テキストがすべて表示されます。私は他の多くの可能性を試しましたが、私は知恵の終わりにいます。そのテキストを直接収集するにはどうすればよいですか?


編集-- ウィンドウのテキストは、見出しの下に Window Spy に表示されます: TitleMatchMode=slow Visible Text、見出しではありません: Visible Window Text


編集 -- 2 つのウィンドウについてお話ししました。ボリュームとページ番号を取得する最初のもの。ボタンを押してポップアップする必要がある2番目のもの。これらのウィンドウは両方とも同じクラス名を持っています: ahk_class ThunderRT6MDIForm 何か問題はありますか?


編集--結論は、2番目のウィンドウからそのテキストを直接取得することは不可能であるということです。そのため、私は不器用で退屈な手動の方法を選択しました。アクティブなウィンドウに {shift down} を送信し、ウィンドウの下部をクリックします。次に、選択範囲をクリップボードに保存します。それは機能しますが、それはただ愚かです。これよりもエレガントなソリューションを見つけるのを手伝ってください。

これは私が使用したコードです:

ControlGetText, volume, ThunderRT6TextBox3 

ControlGetText, page, ThunderRT6TextBox2 

Click, 110, 70 

sleep 1000

SendInput {shift down}

click 29, 490

SendInput {shift up}

sleep 1000

SendInput, ^{ins} 

sleep 100

abc などの実際のキーボード キーは使用できないことに注意してください。しかし、ctrl、shift、ins を送信できます。上で述べたように、^c も ^a が問題を与えていたのと同じように問題を与えていました。

4

2 に答える 2