Что нового

Получить текст из окна

Атос

Новичок
Сообщения
85
Репутация
0
Привет.

Как возможно получить список файлов в классе контрола нужного мне окна?
Допустим, у меня открыт Total Commander, и в нём открыта какая-нибудь папка.
Я пытаюсь получить текст (список файлов) из этого контрола [CLASS:TMyListBox; INSTANCE:1].
Код:
$dd = ControlGetText('Total', '', 'TMyListBox1')
MsgBox(0, '111', $dd)


Не получается.

То же самое пытаюсь получить из проводника.

Код:
$dd = ControlGetText('WINDOWS', '', '[CLASS:SysListView32; INSTANCE:1]')
MsgBox(0, '111', $dd)


Возможно ли это в принципе?
 
Автор
А

Атос

Новичок
Сообщения
85
Репутация
0
InnI, дело в том, что мне нужно решение именно такой задачи, которую я описал в вопросе.

Ведь, мне нужны не только реальные объекты папок, но и всякие вирутальные объекты, типа "Мой компьютер", "Корзина", "Рабочий стол" и др.

Мне нужно именно получать текст из таких классов.
Т.е., надо сделать, чтобы это читалось, типа как StdOut, но и без всяких сторонних костылей, типа @ComSpec.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Атос
нужно именно получать текст из таких классов
Ну, если нужно...
Из списков сразу весь текст не получить. Но можно узнать текст конкретного элемента.

из этого контрола [CLASS:TMyListBox; INSTANCE:1]
Код:
_GUICtrlListBox_GetText()


получить из проводника
Для Windows XP (SysListView32)
Код:
ControlListView()
; или
_GUICtrlListView_GetItemText()
 
Автор
А

Атос

Новичок
Сообщения
85
Репутация
0
Работает в проводнике, а в Тотале не хочет.
 
Автор
А

Атос

Новичок
Сообщения
85
Репутация
0
Какая функция работает, эта?

Код:
ControlListView()
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Атос
Прочитайте ВНИМАТЕЛЬНО мой ответ. Для каждого класса своя функция.
На будущее. В DirectUIHWND (проводник Windows 7) ни одна из перечисленных работать не будет.
 
Автор
А

Атос

Новичок
Сообщения
85
Репутация
0
InnI, а что, начиная с WINDOWS 7 функция _GUICtrlListView_GetItemText работать не будет?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
В элементах класса SysListView32 - будет работать. В проводнике - нет, т.к. начиная с Win7 там другой контрол.
 
Автор
А

Атос

Новичок
Сообщения
85
Репутация
0
InnI, а как получить список файлов Total Commander из ListView?
Я вообще не могу найти такой класс.
Может он скрыт?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Атос [?]
получить список файлов Total Commander
Проверял на версии TC 9.10
Код:
#include <GuiListBox.au3>

$hLB = ControlGetHandle("[class:TTOTAL_CMD]", "", "TMyListBox1")
For $i = 0 To _GUICtrlListBox_GetCount($hLB) - 1
  ConsoleWrite(_GUICtrlListBox_GetText($hLB, $i) & @CRLF)
Next
 
Верх