Перехват сообщений RichEdit'a
От: Аноним  
Дата: 12.11.05 20:30
Оценка:
Здравствуйте.
Мне нужно перехватить EM_REPLACESEL для RichEdit'a. Я получаю его окно, устанавливаю хук напоток. Сообщения приходят, но не все, — EM_REPLACESEL не приходит. Может я что-то делаю не так?

Установка хука:
ThreadId := GetWindowThreadProcessId(SharedData.RichEditWnd);
SysHook := SetWindowsHookEx(WH_GETMESSAGE, @SysMsgProc, HInstance, ThreadId);

Обработка сообщений:
Msg := PMsg(lParam);
if (Msg.hwnd = SharedData.RichEditWnd) and (Msg.message = EM_REPLACESEL) then
begin
PostMessage(SharedData.ServerWnd, HOOK_MSG, 0, 0);
end;
Re: Перехват сообщений RichEdit'a
От: netie Украина  
Дата: 12.11.05 20:32
Оценка:
Это я был.
Re: Перехват сообщений RichEdit'a
От: netie Украина  
Дата: 12.11.05 20:47
Оценка:
Может это вообще не хуками делается? Интересно, как это в Spy++ реализовано.
Re: Перехват сообщений RichEdit'a
От: Кодёнок  
Дата: 14.11.05 09:10
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Установка хука:

А>ThreadId := GetWindowThreadProcessId(SharedData.RichEditWnd);
А>SysHook := SetWindowsHookEx(WH_GETMESSAGE, @SysMsgProc, HInstance, ThreadId);

Попробуй хук WH_CALLWINDOWPROC. Потому что WH_GETMESSAGE — это только Posted Messages, а EM_REPLACESEL шлют через SendMessage, т.к. оно содержит указатели.
Re[2]: Перехват сообщений RichEdit'a
От: BlackShadow666  
Дата: 14.11.05 09:36
Оценка:
Здравствуйте, netie, Вы писали:

N>Может это вообще не хуками делается? Интересно, как это в Spy++ реализовано.


Я бы рекомендовал не углубляться в хуки, а просто заменить оконную процедуру твоего RichEdit'а. Оно и систему-то дёргать не будет, да и как-то попроще...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.