ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

03.06.2008, 10:01
|
|
Новичок
Регистрация: 02.06.2008
Сообщений: 4
Провел на форуме: 12856
Репутация:
0
|
|
Ловушка сообшений
Здравствуйте, помогите решить задачу.
Установил глобальный hook = SetWindowsHookEx(WH_CALLWNDPROCRET, @HookProc, HInstance, 0);
Необходимо поймать сообщение WM_SETCURSOR.
После запуска программы вылетает "Ошибка чтения памяти и её адрес"
Однако если использовать hook WH_JOURNALRECORD то программа запускается и такие сообщения как:
WM_MOUSEMOVE, WM_LBUTTONDOWN, WM_LBUTTONUP, WM_RBUTTONDOWN, WM_RBUTTONUP, WM_KEYUP, WM_KEYDOWN
ловятся.
А вот WM_SETCURSOR Нет.
Может я что-то не указываю? Или это сообщение нужно обрабатывать как-то?
Спасибо.
Листинг :
var
HookHandle: hHook;
function HookProc(Code: integer; WParam: word; LParam: Longint): Longint; stdcall;
var
msg: PEVENTMSG;
begin
if Code >= 0 then begin
result := 0;
msg := Pointer(LParam);
with Form1 do
case msg.message of
WM_SETCURSOR : Label1.Caption:='Сообщение получено.';
end;
end else
result := CallNextHookEx(HookHandle, code, WParam, LParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
HookHandle := SetWindowsHookEx(WH_CALLWNDPROCRET, @HookProc, HInstance, 0);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if HookHandle <> 0 then
UnhookWindowsHookEx(HookHandle);
end;
|
|
|
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Ловушка для взломщика
|
k00p3r |
Чужие Статьи |
0 |
08.06.2005 16:48 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|