Armenian Knowledge Base  

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

Reply
 
LinkBack Thread Tools
Old 20.05.2004, 07: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
Downloads: 4
Uploads: 0
Reputation: 146 | 4
Default получение текста другого окна

на примере notepad-a. GetWindowText нормально возвращает текст фрейма, но выдаёт пустую строку на самом editbox-e. в чём причина? вряд ли из-за разницы между ansi и unicode функциями - система выполняет необходимое преобразование, тем более, что в тексте использованы только латинские символы
Reply With Quote
Old 20.05.2004, 08:24   #2
Академик
 
greka's Avatar
 
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Downloads: 0
Uploads: 0
Reputation: 18 | 5
Default

mojno primer koda v studiyu ?
Reply With Quote
Old 20.05.2004, 08: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
Downloads: 4
Uploads: 0
Reputation: 146 | 4
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) - нет
Reply With Quote
Old 20.05.2004, 14:04   #4
Грустно...
 
Agregat's Avatar
 
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 35
Posts: 21,717
Downloads: 2
Uploads: 0
Reputation: 250 | 7
Default

Арам, а ты уверен, что GetWindowText для окна notepad -а должен возвращать его текст? Если хочешь я тебе пришлю исходники нотепада, а ты покопайся
Reply With Quote
Old 20.05.2004, 14: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
Downloads: 4
Uploads: 0
Reputation: 146 | 4
Default

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

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

если нотпад отличается от того, что генерит студия при создании mfc appwizard приложения, то пришли плиз, посмотрю...
Reply With Quote
Old 20.05.2004, 14:28   #6
Грустно...
 
Agregat's Avatar
 
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 35
Posts: 21,717
Downloads: 2
Uploads: 0
Reputation: 250 | 7
Default

ок пришли приватом майл получишь зип.
Reply With Quote
Old 20.05.2004, 15:34   #7
Дошкольник
 
Join Date: 03 2003
Location: 2A
Age: 49
Posts: 104
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

Текст editbox-а ты не получишь с помощью GetWindowText, т.к. он возвращает только заголовок окна, а текст можешь читать с помощью WM_GETTEXT, хотя в случае notepad-а и это не поможет, notepad рисует текст прямо на DC, это всего лишь рисунок + internal buffer для текста.
Reply With Quote
Old 20.05.2004, 15: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
Downloads: 4
Uploads: 0
Reputation: 146 | 4
Default

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

Quote:
хотя в случае notepad-а и это не поможет, notepad рисует текст прямо на DC, это всего лишь рисунок + internal buffer для текста.
тогда как это удается программе spy? кстати, она как раз показывает, что в клиентской области окна нотпада сидит обычный editbox
Reply With Quote
Old 21.05.2004, 06:27   #9
Дошкольник
 
Join Date: 03 2003
Location: 2A
Age: 49
Posts: 104
Downloads: 0
Uploads: 0
Reputation: 0 | 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 должно помочь.
Reply With Quote
Old 21.05.2004, 07:31   #10
Грустно...
 
Agregat's Avatar
 
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 35
Posts: 21,717
Downloads: 2
Uploads: 0
Reputation: 250 | 7
Default

Спай, глобально по другому работает. Я бы посоветовал посмотреть исходники распостраняемых в инете подсмотрщики паролей. Они даже ртф раскодируют.
Reply With Quote
Old 21.05.2004, 08:52   #11
Академик
 
greka's Avatar
 
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Downloads: 0
Uploads: 0
Reputation: 18 | 5
Default

глобально по-другому - так как же, в конце концов?
Reply With Quote
Old 21.05.2004, 09:14   #12
Грустно...
 
Agregat's Avatar
 
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 35
Posts: 21,717
Downloads: 2
Uploads: 0
Reputation: 250 | 7
Default

Господин Казарян, там выше написано, какие программы делают это, и то, что их исходники лежат в сети. Не ленитеь, погуглите, и покопайтесь в сырцах.
Reply With Quote
Old 21.05.2004, 10: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
Downloads: 4
Uploads: 0
Reputation: 146 | 4
Default

Quote:
Originally Posted by armeng
Честно говоря, я не смотрел spy-ом, это у меня была догадка, что нотпад рисует на DC. Если действительно там обычный editbox, то WM_GETTEXT должно помочь.
помогло, спасибо
Reply With Quote
Old 21.05.2004, 12:14   #14
Академик
 
greka's Avatar
 
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Downloads: 0
Uploads: 0
Reputation: 18 | 5
Default

Quote:
Originally Posted by Agregat
Господин Казарян, там выше написано, какие программы делают это, и то, что их исходники лежат в сети. Не ленитеь, погуглите, и покопайтесь в сырцах.
...времени жалко - надеялся, что в двух словах кто сможет опЪисать
Reply With Quote
Old 23.05.2004, 12: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
Downloads: 4
Uploads: 0
Reputation: 146 | 4
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 With Quote
Sponsored Links
Reply

Thread Tools


На правах рекламы:
реклама

All times are GMT. The time now is 15:49.


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