Go Back   Armenian Knowledge Base > Technical sections > Languages, Compilers, Interpreters

Reply
 
Thread Tools

получение текста другого окна
Old 20.05.2004, 06:17   #1
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
Default получение текста другого окна

на примере notepad-a. GetWindowText нормально возвращает текст фрейма, но выдаёт пустую строку на самом editbox-e. в чём причина? вряд ли из-за разницы между ansi и unicode функциями - система выполняет необходимое преобразование, тем более, что в тексте использованы только латинские символы

Old 20.05.2004, 07:24   #2
Академик
 
greka's Avatar
 
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
Default

mojno primer koda v studiyu ?

Old 20.05.2004, 07:45   #3
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
Default

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) - нет

Old 20.05.2004, 13:04   #4
Грустно...
 
Agregat's Avatar
 
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
Default

Арам, а ты уверен, что GetWindowText для окна notepad -а должен возвращать его текст? Если хочешь я тебе пришлю исходники нотепада, а ты покопайся

Old 20.05.2004, 13:11   #5
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
Default

Quote:
Originally Posted by Agregat
Арам, а ты уверен, что GetWindowText для окна notepad -а должен возвращать его текст? Если хочешь я тебе пришлю исходники нотепада, а ты покопайся
а как же иначе может работать spy? он ведь по идее работает с любым окном, вряд ли для определенных окон будет использовать специальные методы.

кстати, еще шрифт не могу запросить (и тем более - установить). это может быть связано с принадлежностью окон разным процессам? есть такие ограничения в w2k и/или xp? и как с этим обстоит на 95/98?

если нотпад отличается от того, что генерит студия при создании mfc appwizard приложения, то пришли плиз, посмотрю...

Old 20.05.2004, 13:28   #6
Грустно...
 
Agregat's Avatar
 
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
Default

ок пришли приватом майл получишь зип.

Old 20.05.2004, 14:34   #7
Дошкольник
 
Join Date: 03 2003
Location: 2A
Age: 56
Posts: 104
Rep Power: 0
Default

Текст editbox-а ты не получишь с помощью GetWindowText, т.к. он возвращает только заголовок окна, а текст можешь читать с помощью WM_GETTEXT, хотя в случае notepad-а и это не поможет, notepad рисует текст прямо на DC, это всего лишь рисунок + internal buffer для текста.

Old 20.05.2004, 14:40   #8
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
Default

Quote:
Originally Posted by armeng
Текст editbox-а ты не получишь с помощью GetWindowText, т.к. он возвращает только заголовок окна, а текст можешь читать с помощью WM_GETTEXT
а какая разница между этими двумя методами?

Quote:
хотя в случае notepad-а и это не поможет, notepad рисует текст прямо на DC, это всего лишь рисунок + internal buffer для текста.
тогда как это удается программе spy? кстати, она как раз показывает, что в клиентской области окна нотпада сидит обычный editbox

Old 21.05.2004, 05:27   #9
Дошкольник
 
Join Date: 03 2003
Location: 2A
Age: 56
Posts: 104
Rep Power: 0
Default

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 должно помочь.

Old 21.05.2004, 06:31   #10
Грустно...
 
Agregat's Avatar
 
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
Default

Спай, глобально по другому работает. Я бы посоветовал посмотреть исходники распостраняемых в инете подсмотрщики паролей. Они даже ртф раскодируют.

Old 21.05.2004, 07:52   #11
Академик
 
greka's Avatar
 
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
Default

глобально по-другому - так как же, в конце концов?

Old 21.05.2004, 08:14   #12
Грустно...
 
Agregat's Avatar
 
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 42
Posts: 21,717
Rep Power: 9
Default

Господин Казарян, там выше написано, какие программы делают это, и то, что их исходники лежат в сети. Не ленитеь, погуглите, и покопайтесь в сырцах.

Old 21.05.2004, 09:24   #13
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
Default

Quote:
Originally Posted by armeng
Честно говоря, я не смотрел spy-ом, это у меня была догадка, что нотпад рисует на DC. Если действительно там обычный editbox, то WM_GETTEXT должно помочь.
помогло, спасибо

Old 21.05.2004, 11:14   #14
Академик
 
greka's Avatar
 
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
Default

Quote:
Originally Posted by Agregat
Господин Казарян, там выше написано, какие программы делают это, и то, что их исходники лежат в сети. Не ленитеь, погуглите, и покопайтесь в сырцах.
...времени жалко - надеялся, что в двух словах кто сможет опЪисать

Old 23.05.2004, 11:48   #15
The Reloaded
 
Aram Hambardzumyan's Avatar
 
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
Default

Quote:
Originally Posted by armeng
GetWindowText cannot retrieve the text of a control in another application.
...
Если действительно там обычный editbox, то WM_GETTEXT должно помочь.
действительно, с WM_GETTEXT текст выковыривается.

агрегат: спасибо за исходники нотпада, я попробовал через получение буфера editbox-a, но добраться до него не вышло, видимо из-за принадлежности другому процессу.
Reply




Реклама:
реклама

All times are GMT. The time now is 03:12.
Top

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.