Форум: "WinAPI";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
ВнизДостать текс из класса типа 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.05 c