![](https://forum.armkb.com/images/enlighten/misc/cat_top_ls.gif) |
получение текста другого окна |
![](https://forum.armkb.com/images/enlighten/misc/cat_top_rs.gif) |
20.05.2004, 06:17
|
#1
|
The Reloaded
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
|
получение текста другого окна
на примере notepad-a. GetWindowText нормально возвращает текст фрейма, но выдаёт пустую строку на самом editbox-e. в чём причина? вряд ли из-за разницы между ansi и unicode функциями - система выполняет необходимое преобразование, тем более, что в тексте использованы только латинские символы
|
|
|
20.05.2004, 07:24
|
#2
|
Академик
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
|
mojno primer koda v studiyu ?
|
|
|
20.05.2004, 07:45
|
#3
|
The Reloaded
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
|
Quote:
Originally Posted by greka
mojno primer koda v studiyu ?
|
Code:
CWnd* wnd = CWnd::FromHandle(WindowFromPoint(pt));
CString wndText;
if(IsWindow(wnd->m_hWnd))
{
wnd->GetWindowText(wndText);
}
добавлю, что spy++ на работе (win2000) добирается до текста в блокноте, а дома (xp) - нет
|
|
|
20.05.2004, 13:04
|
#4
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
Арам, а ты уверен, что GetWindowText для окна notepad -а должен возвращать его текст? Если хочешь я тебе пришлю исходники нотепада, а ты покопайся
|
|
|
20.05.2004, 13:11
|
#5
|
The Reloaded
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
|
Quote:
Originally Posted by Agregat
Арам, а ты уверен, что GetWindowText для окна notepad -а должен возвращать его текст? Если хочешь я тебе пришлю исходники нотепада, а ты покопайся ![Smilie](https://forum.armkb.com/images/smilies/smile.gif)
|
а как же иначе может работать spy? он ведь по идее работает с любым окном, вряд ли для определенных окон будет использовать специальные методы.
кстати, еще шрифт не могу запросить (и тем более - установить). это может быть связано с принадлежностью окон разным процессам? есть такие ограничения в w2k и/или xp? и как с этим обстоит на 95/98?
если нотпад отличается от того, что генерит студия при создании mfc appwizard приложения, то пришли плиз, посмотрю...
|
|
|
20.05.2004, 13:28
|
#6
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
ок пришли приватом майл получишь зип.
|
|
|
20.05.2004, 14:34
|
#7
|
Дошкольник
Join Date: 03 2003
Location: 2A
Age: 56
Posts: 104
Rep Power: 0
|
Текст editbox-а ты не получишь с помощью GetWindowText, т.к. он возвращает только заголовок окна, а текст можешь читать с помощью WM_GETTEXT, хотя в случае notepad-а и это не поможет, notepad рисует текст прямо на DC, это всего лишь рисунок + internal buffer для текста.
|
|
|
20.05.2004, 14:40
|
#8
|
The Reloaded
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
|
Quote:
Originally Posted by armeng
Текст editbox-а ты не получишь с помощью GetWindowText, т.к. он возвращает только заголовок окна, а текст можешь читать с помощью WM_GETTEXT
|
а какая разница между этими двумя методами?
Quote:
хотя в случае notepad-а и это не поможет, notepad рисует текст прямо на DC, это всего лишь рисунок + internal buffer для текста.
|
тогда как это удается программе spy? кстати, она как раз показывает, что в клиентской области окна нотпада сидит обычный editbox
|
|
|
21.05.2004, 05:27
|
#9
|
Дошкольник
Join Date: 03 2003
Location: 2A
Age: 56
Posts: 104
Rep Power: 0
|
Quote:
Originally Posted by Aram Hambardzumyan
а какая разница между этими двумя методами?
|
GetWindowText cannot retrieve the text of a control in another application.
Quote:
тогда как это удается программе spy? кстати, она как раз показывает, что в клиентской области окна нотпада сидит обычный editbox
|
Честно говоря, я не смотрел spy-ом, это у меня была догадка, что нотпад рисует на DC. Если действительно там обычный editbox, то WM_GETTEXT должно помочь.
|
|
|
21.05.2004, 06:31
|
#10
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
Спай, глобально по другому работает. Я бы посоветовал посмотреть исходники распостраняемых в инете подсмотрщики паролей. Они даже ртф раскодируют.
|
|
|
21.05.2004, 07:52
|
#11
|
Академик
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
|
глобально по-другому - так как же, в конце концов?
|
|
|
21.05.2004, 08:14
|
#12
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
|
Господин Казарян, там выше написано, какие программы делают это, и то, что их исходники лежат в сети. Не ленитеь, погуглите, и покопайтесь в сырцах.
|
|
|
21.05.2004, 09:24
|
#13
|
The Reloaded
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
|
Quote:
Originally Posted by armeng
Честно говоря, я не смотрел spy-ом, это у меня была догадка, что нотпад рисует на DC. Если действительно там обычный editbox, то WM_GETTEXT должно помочь.
|
помогло, спасибо
|
|
|
21.05.2004, 11:14
|
#14
|
Академик
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
|
Quote:
Originally Posted by Agregat
Господин Казарян, там выше написано, какие программы делают это, и то, что их исходники лежат в сети. Не ленитеь, погуглите, и покопайтесь в сырцах.
|
...времени жалко - надеялся, что в двух словах кто сможет опЪисать
|
|
|
23.05.2004, 11:48
|
#15
|
The Reloaded
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
|
Quote:
Originally Posted by armeng
GetWindowText cannot retrieve the text of a control in another application.
...
Если действительно там обычный editbox, то WM_GETTEXT должно помочь.
|
действительно, с WM_GETTEXT текст выковыривается.
агрегат: спасибо за исходники нотпада, я попробовал через получение буфера editbox-a, но добраться до него не вышло, видимо из-за принадлежности другому процессу.
|
|
|
All times are GMT. The time now is 03:12. |
|
|