![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Достать текс из класса типа Afx:400000:4048:10013:0:0 [D6, WinXP]
klimov © (2006-12-16 23:01:00)Есть некая программа, содержащая окно, где пользователь набирает текст, так вот стоит задача забрать с этого окна текст.
С помощью InqSoft Window Scanner удалось узнать структуру программы:
... (сама форма и куча панелей)
а. Класс окна - MDIClient
b. Доченее окно: Класс окна - Afx:400000:b:10011:6:140265
с. на дочеренм окне находится следующее окно: Класс окна - Afx:400000:4048:10013:0:0
Вот именно в данном окне производится набор текста.
Данное окно собой представляет огранниченное поле 24 линии по 80 символов на строку.
Так вот как можно получить текст с этого поля???
GetWindowText и WM_GETTEXT ничего не вытаскивают... :(
Также не могу определить положение курсора на данном поле... :(
klimov (2006-12-22 11:13:00) [1]помести туда картинку из фотошопа и попробуй програмно убрать из буфера, а потом вставить ее в буфер - посмотришь какие тормоза будут!
А такие операции придется проделывать чуть ли не ежесекундно!
novill (2006-12-19 09:47:00) [2]> [21] klimov © (18.12.06 18:10)
а что мешеает сохранять пользовательский буфер, делать свои операции, потом все возращать на место?
klimov (2006-12-18 18:10:00) [3]я это понимаю, но учитывая что пользователи иногда пользуются буфером - думаю он кому-то помешает... :(
Или мне или им! :(
novill (2006-12-18 16:50:00) [4]имхо, остается оптимизировать анализ того, что получаешь через буфер. Даже если заставишь, тебе GetWindowText вернет то же самое.
klimov (2006-12-18 15:54:00) [5]т.е. создаю глобальный хук на клаву, далее смотрю активное окно, если он, то надо бы сохранить данный запрос... :)
klimov (2006-12-18 15:52:00) [6]по клавише Enter
novill (2006-12-18 15:47:00) [7]> [13] klimov © (18.12.06 15:22)
А по какому событию ты хочешь записывать запросы?
klimov (2006-12-18 15:29:00) [8]нет... БД находится по ту сторону инета... :(
clickmaker (2006-12-18 15:26:00) [9]
> [14] klimov © (18.12.06 15:24)
а средствами самой БД этого никак не сделать?
Есть же профайлеры всякие и т.д. и т.п. SQL мониторы...
klimov (2006-12-18 15:24:00) [10]То clickmaker >
Есть некая прога в ней колбасятся некоторые запросы, так вот стоит задача, чтоб эти запросы писались в БД!
Перехватывать пакеты - бесполезно - по SSL все шифруется... :(
klimov (2006-12-18 15:22:00) [11]насчет буфера - уже сделано, но проблема в том что там очень много мусора.
На экране может быть много запросов, а из них надо выделить последний!
Если бы возможно было бы определить положение курсора - другое дело!
Сохранять образ предыдущего окна и смотреть что появилось на нем - это долго - заметно притормаживание.
clickmaker (2006-12-18 15:15:00) [12]<almost offtopic>
а кто-нить может мне растолковать, что за задачи такие у людей встречаются, когда кровь из носу нужно выдрать текст из чужого приложения?
не первый вопрос ведь...
мне правда интересно, не сочтите за стёб
</almost offtopic>
novill (2006-12-18 14:59:00) [13]> [9] klimov © (18.12.06 14:21)
тебе просто текст надо содрать?
Можно попробовать клавиатурными сообщениями выделить и скопировать текcт в clipboard...
BiN (2006-12-18 14:46:00) [14]
> klimov © (18.12.06 14:21) [9]
Это право разработчиков приложения - игнорировать стандартные сообщения о запросе текста.
klimov (2006-12-18 14:21:00) [15]уже посмотрел... Мыша ползает именно над окном с этим handl'ом...
Другого класса не находит... :(
Посмотрел уже c помощью:
1. WinDowse
2. WindowScanner
3. WinSpector Spy
4. WinCheat
ну ниодна из них не показывает что на данном классе есть что-то еще... :(
novill (2006-12-18 12:24:00) [16]может на форме есть "промежуточное" окно.
Посмотри какое окно находится под указателем мыши.
clickmaker (2006-12-18 12:03:00) [17]ну попробуй EM_GET...
и точно на этом окне не лежит еще одного класса Edit, например?
klimov (2006-12-18 11:56:00) [18]Дык, это уже понятно! А текст то как с этого окна достать?
clickmaker (2006-12-18 10:21:00) [19]
> [4] klimov © (18.12.06 09:09)
Ну значит не обрабатывает это окно сообщение WM_GETTEXT
klimov (2006-12-18 09:09:00) [20]Да, проверял - возвращает действительно Handle, а не ошибку.
В InqSoft Window Scanner аналогичный дескриптор. Посылал сообщение закрытия данного окна - работает... А вот текст никак не достать!