Как получить текстовое содержимое из окна
У меня есть окно, которое отображает книгу. В двух меньших полях ниже есть номер страницы и объем информации о книге, которая открыта. Я могу получить эту информацию легко следующим образом:
ControlGetText, volume, ThunderRT6TextBox3
ControlGetText, page, ThunderRT6TextBox2
Затем мой скрипт заставляет мой указатель мыши перемещаться к кнопке. Он щелкает по нему, и открывается новое окно. В этом окне есть больше текстовой информации, связанной с книгой, такой как издатель, имя автора, издание и т. Д. Я хочу получить эту информацию. Но когда я пробую ту же стратегию, она не работает, например:
ControlGetText, data, RichTextWndClass3
Единственное различие между этими двумя случаями состоит в том, что эти два небольших поля являются редактируемыми, вы можете вводить текст, тогда как это окно статично.
Я пробовал много других вариантов, таких как:SendEvent ^a
Что эквивалентно control + a, которое должно выбирать все. Я попытался поставить паузы, но это никогда не выберет. Я попробовал скрипт, чтобы дважды щелкнуть это окно вручную. Это работает, и одно слово выбирается вот так. Даже тогда SendEvent ^ a ничего не делает. Однако, если я сделаю SendEvent ^ {insert}, то выбранное слово будет скопировано в мой буфер обмена.
Я экспериментировал с большим количеством комбинаций:
ControlSend ahk_class ThunderRT6FormDC, ^a
ControlSend ClassNN RichTextWndClass3, ^a
а также
ControlSend ThunderRT6FormDC, ^a
ControlSend RichTextWndClass3, ^a
Никто из них не работает. Весь выбор текста не проявляется в этом окне.
Единственная оставшаяся альтернатива для меня - заставить скрипт делать выделение всего текста вручную. Однако это медленно и очень смешно. Кроме того, в Window Spy под разделом: Текст видимого окна, текст есть все. Я перепробовал много других возможностей, и я нахожусь в конце своего ума. Как мне собрать этот текст напрямую?
РЕДАКТИРОВАТЬ - Текст окна отображается в Window Spy под заголовком: TitleMatchMode = медленный видимый текст, НЕ заголовок: видимый текст окна
РЕДАКТИРОВАТЬ-- Я говорил с вами о двух окнах. Первый, в котором я получаю объем и номер страницы. Второй, который должен появиться при нажатии кнопки. Оба эти окна имеют одно и то же имя класса: ahk_class ThunderRT6MDIForm Это проблематично?
РЕДАКТИРОВАТЬ-- Вывод заключается в том, что я не могу получить этот текст из второго окна напрямую. Таким образом, я выбрал слабый, скучный ручной метод. Я посылаю {смещение вниз} в активное окно, а затем делаю щелчок внизу окна. Затем я сохраняю выбор в буфер обмена. Это работает, но это просто глупо. Пожалуйста, помогите мне найти более элегантное решение, чем это.
Это код, который я использовал:
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
Забавно отметить, что настоящие клавиши клавиатуры, такие как bc, невозможны. Но я могу послать ctrl, shift и ins. Как я отмечал выше, ^ c также давал проблемы, как ^ a давал проблемы.