Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
2-1178202566
Серый
2007-05-03 18:29
2007.05.20
EditKeyPress


15-1177074037
Сергей М.
2007-04-20 17:00
2007.05.20
Фокс-геморрой


6-1163627850
skiner
2006-11-16 00:57
2007.05.20
Как передать текст с ServerSocket на ClientSocket?


2-1177728215
Pekar
2007-04-28 06:43
2007.05.20
Имя текущего пользователя


15-1177046995
NewUser2
2007-04-20 09:29
2007.05.20
PHP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский