AutoIT: ControlGetText не получает весь текст

введите здесь описание изображения

Я пытаюсь получить текст при редактировании поля со списком, но он возвращает только первое слово, а не остальные.

WinWaitActive("Properties")
Sleep(500)
$select = ControlGetText("Properties", "", "[CLASS:ComboBox; INSTANCE:1]")
MsgBox(0, "", $select)

person NullReferenceException    schedule 20.06.2013    source источник
comment
Почему бы не использовать _GUICtrlComboBox_GetEditText?   -  person Matt    schedule 20.06.2013
comment
Я пробовал это, и он ничего не возвращает, как и пустой. Существует поле со списком, в котором отображается имя файла и тип файла. Когда я пытаюсь отобразить текст поля со списком, он возвращает только имя файла. Я только что понял, используя Window Info Tool, что единственным видимым текстом является имя файла, а тип файла не виден и не скрыт.   -  person NullReferenceException    schedule 20.06.2013
comment
для какого приложения это, или есть стандартное приложение Windows, которое показывает такое же поведение? В качестве альтернативы, не могли бы вы сделать несколько снимков экрана и получить дополнительную информацию об этом.   -  person Matt    schedule 20.06.2013
comment
Это первое приложение, которое я видел с таким поведением. Я только что загрузил скриншот выпадающего списка и информацию о нем. Спасибо.   -  person NullReferenceException    schedule 20.06.2013
comment
Да, это не стандартный элемент управления, поэтому стандартные функции этого не сделают. Строка JPEG, вероятно, нарисована владельцем, поэтому я не думаю, что есть какой-либо способ прочитать это, кроме OCR.   -  person Matt    schedule 20.06.2013
comment
Верно. В любом случае спасибо, вы очень помогли. :)   -  person NullReferenceException    schedule 20.06.2013
comment
Можно ли поймать текст через ctrl+c? Может быть, этот способ мог бы работать. Кроме того, вам не нужен сон.   -  person Xenobiologist    schedule 20.06.2013


Ответы (1)


Просто так этот вопрос может быть закрыт как ответ:

Часть этого элемента управления в формате JPEG, скорее всего, нарисована владельцем, и уж точно не является частью стандартного элемента управления. В результате на нем не будут работать стандартные функции управления.

Единственными оставшимися вариантами являются прямое чтение памяти программы (в зависимости от языка, на котором она была написана, и способа хранения строки, это может быть довольно просто или практически невозможно) или OCR. Для AutoIt создано несколько библиотек OCR, просто поищите на форумах.

person Matt    schedule 20.06.2013