Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.20;
Скачать: CL | DM;

Вниз

Достать текс из класса типа Afx:400000:4048:10013:0:0   Найти похожие ветки 

 
klimov ©   (2006-12-16 23:01) [0]

Есть некая программа, содержащая окно, где пользователь набирает текст, так вот стоит задача забрать с этого окна текст.
С помощью InqSoft Window Scanner удалось узнать структуру программы:
... (сама форма и куча панелей)
а. Класс окна - MDIClient
b. Доченее окно: Класс окна - Afx:400000:b:10011:6:140265
с. на дочеренм окне находится следующее окно: Класс окна - Afx:400000:4048:10013:0:0
Вот именно в данном окне производится набор текста.
Данное окно собой представляет огранниченное поле 24 линии по 80 символов на строку.
Так вот как можно получить текст с этого поля???

GetWindowText и WM_GETTEXT ничего не вытаскивают... :(
Также не могу определить положение курсора на данном поле... :(


 
Eraser ©   (2006-12-17 01:27) [1]

> [0] klimov ©   (16.12.06 23:01)

показывай как определяешь дескриптор этого окна.


 
klimov ©   (2006-12-17 17:00) [2]

var SubHW, HW: HWND;

... {skiped}
     HW := GetActiveWindow;
     SubHW := FindWindowEx(HW, 0, "MDIClient", nil);
     //
     SubHW := SendMessage(SubHW, WM_MDIGETACTIVE, 0, 0);
     SubHW := GetWindow(SubHW, GW_CHILD);      // Другого окна там нету
...


 
Eraser ©   (2006-12-17 17:07) [3]

> [2] klimov ©   (17.12.06 17:00)


>  SubHW := GetWindow(SubHW, GW_CHILD);      

проверял GetLastError? действительно возвращает дескриптор окна, а не ошибку?


 
klimov ©   (2006-12-18 09:09) [4]

Да, проверял - возвращает действительно Handle, а не ошибку.
В InqSoft Window Scanner аналогичный дескриптор. Посылал сообщение закрытия данного окна - работает... А вот текст никак не достать!


 
clickmaker ©   (2006-12-18 10:21) [5]


> [4] klimov ©   (18.12.06 09:09)

Ну значит не обрабатывает это окно сообщение WM_GETTEXT


 
klimov ©   (2006-12-18 11:56) [6]

Дык, это уже понятно! А текст то как с этого окна достать?


 
clickmaker ©   (2006-12-18 12:03) [7]

ну попробуй EM_GET...
и точно на этом окне не лежит еще одного класса Edit, например?


 
novill ©   (2006-12-18 12:24) [8]

может на форме есть "промежуточное" окно.

Посмотри какое окно находится под указателем мыши.


 
klimov ©   (2006-12-18 14:21) [9]

уже посмотрел... Мыша ползает именно над окном с этим handl"ом...
Другого класса не находит... :(
Посмотрел уже c помощью:
1. WinDowse
2. WindowScanner
3. WinSpector Spy
4. WinCheat
ну ниодна из них не показывает что на данном классе есть что-то еще... :(


 
BiN ©   (2006-12-18 14:46) [10]


> klimov ©   (18.12.06 14:21) [9]

Это право разработчиков приложения - игнорировать стандартные сообщения о запросе текста.


 
novill ©   (2006-12-18 14:59) [11]

> [9] klimov ©   (18.12.06 14:21)

тебе просто текст надо содрать?
Можно попробовать клавиатурными сообщениями выделить и скопировать текcт в clipboard...


 
clickmaker ©   (2006-12-18 15:15) [12]

<almost offtopic>
а кто-нить может мне растолковать, что за задачи такие у людей встречаются, когда кровь из носу нужно выдрать текст из чужого приложения?
не первый вопрос ведь...
мне правда интересно, не сочтите за стёб
</almost offtopic>


 
klimov ©   (2006-12-18 15:22) [13]

насчет буфера - уже сделано, но проблема в том что там очень много мусора.
На экране может быть много запросов, а из них надо выделить последний!
Если бы возможно было бы определить положение курсора - другое дело!
Сохранять образ предыдущего окна и смотреть что появилось на нем - это долго - заметно притормаживание.


 
klimov ©   (2006-12-18 15:24) [14]

То clickmaker >
Есть некая прога в ней колбасятся некоторые запросы, так вот стоит задача, чтоб эти запросы писались в БД!
Перехватывать пакеты - бесполезно - по SSL все шифруется... :(


 
clickmaker ©   (2006-12-18 15:26) [15]


> [14] klimov ©   (18.12.06 15:24)

а средствами самой БД этого никак не сделать?
Есть же профайлеры всякие и т.д. и т.п. SQL мониторы...


 
klimov ©   (2006-12-18 15:29) [16]

нет... БД находится по ту сторону инета... :(


 
novill ©   (2006-12-18 15:47) [17]

> [13] klimov ©   (18.12.06 15:22)

А по какому событию ты хочешь записывать запросы?


 
klimov ©   (2006-12-18 15:52) [18]

по клавише Enter


 
klimov ©   (2006-12-18 15:54) [19]

т.е. создаю глобальный хук на клаву, далее смотрю активное окно, если он, то надо бы сохранить данный запрос... :)


 
novill ©   (2006-12-18 16:50) [20]

имхо, остается оптимизировать анализ того, что получаешь через буфер. Даже если заставишь, тебе GetWindowText вернет то же самое.


 
klimov ©   (2006-12-18 18:10) [21]

я это понимаю, но учитывая что пользователи иногда пользуются буфером - думаю он кому-то помешает... :(
Или мне или им! :(


 
novill ©   (2006-12-19 09:47) [22]

> [21] klimov ©   (18.12.06 18:10)

а что мешеает сохранять пользовательский буфер, делать свои операции, потом все возращать на место?


 
klimov ©   (2006-12-22 11:13) [23]

помести туда картинку из фотошопа и попробуй програмно убрать из буфера, а потом вставить ее в буфер - посмотришь какие тормоза будут!
А такие операции  придется проделывать чуть ли не ежесекундно!



Страницы: 1 вся ветка

Текущий архив: 2007.05.20;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.056 c
15-1176918999
Kolan
2007-04-18 21:56
2007.05.20
Поменять ли видюху 6600 на 7100?


2-1178229164
Kostafey
2007-05-04 01:52
2007.05.20
Вложенные SQL запросы в СУБД Access


2-1178185619
Alanu
2007-05-03 13:46
2007.05.20
как определить имя компонента


2-1178025607
gloom
2007-05-01 17:20
2007.05.20
Как добавить прогу в автозагрузку


2-1178101289
sergeyst
2007-05-02 14:21
2007.05.20
Как закрыть нужную форму?