Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

EM_CHARFROMPOS


Kerk ©   (2005-06-21 12:12:00) 

Вот такой код валит WordPad:

FirstPos := SendMessage(Hwnd,EM_CHARFROMPOS,0,Integer(@Pt));

Копчиком чувствую, что проблема в передаваемом указателе.
Неужели нет способа узнать номер символа под курсором RichEdit другого процесса?

Когда внедрял DLLку хуком, тот же код работал.

Google молчит. Яндекс дает ссылки на всякую хрень.


Digitman   (2005-06-21 15:02:00) [1]


> Как прямее?


"прямее" будет "прямой" вариант

а "прямой" вариант - это целевое внедрение кода, т.е. внедрение в АП конкретного (а не всех подряд) процесса

глоб.хук же внедряет код в АП сразу множества процессов, вне зависимости от того, надо оно тебе или не надо


Eraser   (2005-06-21 15:01:00) [2]

Удалено модератором
Примечание: Offtopic


kaZaNoVa   (2005-06-21 15:00:00) [3]

Kerk ©   (21.06.05 14:57) [15]
имхо вариант с длл


Kerk   (2005-06-21 14:57:00) [4]

ОК. Все понятно.
Теперь надо выбрать между внедрением DLL хуком и вариантом предложенным в [11].
Как прямее? :)


Игорь Шевченко   (2005-06-21 14:55:00) [5]

Kerk ©   (21.06.05 14:37) [10]


> Понимаю все это. Но все же WM_GETTEXT как-то работает


WM_GETTEXT известен Windows, поэтому при обработке его и ряда других известных сообщений, Windows создает область разделяемой памяти, доступной всем приложениям, приложение, которое обрабатывает сообщение, копирует данные туда, а Windows уже скопированные данные перемещает в адресное пространство отправителя, и потом уничтожает область общей памяти.


Digitman   (2005-06-21 14:55:00) [6]


> Kerk ©   (21.06.05 14:37) [10]


ну повалил я его ... и что ? ... вполне ожидаемый результат .. АП - чужое, и мой указатель там - как корове седло ..


Kerk   (2005-06-21 14:48:00) [7]

BiN ©   (21.06.05 14:46) [11]
VirtualAllocEx, WriteProcessMemory и иже с ними не пробовал?


О! Кстати мысль. Что-то я про них забыл.


BiN   (2005-06-21 14:46:00) [8]

Kerk ©   (21.06.05 14:37) [10]
Понимаю все это. Но все же WM_GETTEXT как-то работает.
Обидно.. EM_CHARFROMPOS для EDIT прокатывает (там без указателя), а для RICHEDIT - нет :(


VirtualAllocEx, WriteProcessMemory и иже с ними не пробовал?


Kerk   (2005-06-21 14:37:00) [9]

Игорь Шевченко ©   (21.06.05 14:28) [8]
Сам подумай, если указатель ссылается на адресное пространство чужого процесса, что при этом получится ?


Понимаю все это. Но все же WM_GETTEXT как-то работает.
Обидно.. EM_CHARFROMPOS для EDIT прокатывает (там без указателя), а для RICHEDIT - нет :(

Digitman ©   (21.06.05 14:31) [9]

ты не туда сообщение шлешь.
его надо слать самому RICHEDIT, а в твоем случае оно не обрабатывается вообще похоже


Digitman   (2005-06-21 14:31:00) [10]

и WordPad не валит.
конкретно - v5.0 , билд 2195, Винтукей SP4

pt я объявил локально в процедуре и никак не инициализирую

var
 FirstPos: integer;
 pt: integer;
begin
 hwnd := findwindow(nil, 'Document - WordPad'); //окно гарантированно найдено
 FirstPos := SendMessage(Hwnd,EM_CHARFROMPOS,0,Integer(@Pt));

ы ?


Игорь Шевченко   (2005-06-21 14:28:00) [11]


> Копчиком чувствую, что проблема в передаваемом указателе.


Верно чувствуешь. Сам подумай, если указатель ссылается на адресное пространство чужого процесса, что при этом получится ?


Kerk   (2005-06-21 14:16:00) [12]

При посылке сообщения окну RICHEDIT приложение падает.


Kerk   (2005-06-21 14:15:00) [13]

Digitman ©   (21.06.05 14:10) [5]

WordPad !!!! а не Word


Digitman   (2005-06-21 14:10:00) [14]


> Вот такой код валит WordPad:
>
> FirstPos := SendMessage(Hwnd,EM_CHARFROMPOS,0,Integer


именно такой код именно мой Ворд именно не "валит"
эни квешшнз ?


Игорь Шевченко   (2005-06-21 13:44:00) [15]

kaZaNoVa ©   (21.06.05 13:26) [3]


> попробуй заюзать что-нить типа разпознавания символов с
> экрана ..


"Микроэлемента ванадия больше всего в поганках, что вовсе не означает, будто их
надо есть."
(с) ХиЖ 8-1976


kaZaNoVa   (2005-06-21 13:26:00) [16]

Kerk ©   (21.06.05 13:23) [2]
попробуй заюзать что-нить типа разпознавания символов с экрана ..


Kerk   (2005-06-21 13:23:00) [17]

тьфу на тебя, извращенец! :))


kaZaNoVa   (2005-06-21 13:22:00) [18]

может попробовать внедрять не длл а код?


Наверх

Титульная страница Поиск, карта сайта Написать письмо