![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с SetWindowsHookEx(WH_CallWndProc,...) [D7, WinXP]
KonstantinM © (2006-02-22 11:12:00)В программе установлен хук SetWindowsHookEx(WH_CallWndProc,...). После этого перестает работать SendMessageW(UnicodeEditHandle, EM_GETLINE, ...) - всегда возвращает путую строку. Проблема также проявляется, если запустить внешнюю программу, устанавливающую этот хук - например Winspector Spy.
Кто-нибудь сталкивался с такой проблемой? Можно как-нибудь заставить SendMessageW работать?
Сергей М. (2006-02-22 11:51:00) [21]Этот код даже скомпилирован быть не может, не говоря уже о его исполнении.
HookHandle:= SetWindowsHookExW(WH_CALLWNDPROC, @CallWndProcHook, 0, GetCurrentThreadId);
> Обработчик:
> function CallWndProcHook(Code: Integer; WParam: WPARAM;
> LParam: LPARAM): RESULT; stdcall;
Какой еще RESULT ?
Зачем изобретать сомнительные идентификаторы ? Ведь Result - зарезервированный идентификатор !
Чем HHOOK не угодил ?
KonstantinM (2006-02-22 11:29:00) [22]Установка:
HookHandle:= SetWindowsHookExW(WH_CALLWNDPROC, CallWndProcHook, 0, GetCurrentThreadId);
Обработчик:
function CallWndProcHook(Code: Integer; WParam: WPARAM; LParam: LPARAM): RESULT; stdcall;
begin
Result := CallNextHookEx(HookHandle, Code, WParam, LParam);
end;
После этого SendMessageW(UnicodeEditHandle, EM_GETLINE, ...) перестает работать. Сообщение EM_GETLINE до обработчика хука не доходит.
Сергей М. (2006-02-22 11:18:00) [23]Устрани ошибки в коде обработчика хука WH_CallWndProc