ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Ловушка сообшений
  #1  
Старый 03.06.2008, 10:01
hub00
Новичок
Регистрация: 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;
 
Ответить с цитированием

  #2  
Старый 03.06.2008, 12:55
Jes
Постоянный
Регистрация: 16.04.2007
Сообщений: 398
Провел на форуме:
3371897

Репутация: 1462
По умолчанию

HookProc у тебя в dll находится?
 
Ответить с цитированием

  #3  
Старый 03.06.2008, 13:02
hub00
Новичок
Регистрация: 02.06.2008
Сообщений: 4
Провел на форуме:
12856

Репутация: 0
По умолчанию

нет. Все в одном.
 
Ответить с цитированием

  #4  
Старый 03.06.2008, 13:15
Jes
Постоянный
Регистрация: 16.04.2007
Сообщений: 398
Провел на форуме:
3371897

Репутация: 1462
По умолчанию

Цитата:
A global hook procedure can be called in the context of any application in the same desktop as the calling thread, so the procedure must be in a separate DLL module.
msdn
вообщем обработчик глобального хука должен быть расположен в dll (как раз чтобы избежать проблем с доступом к памяти и тп ...)

ну и коротенький экскурс ( http://www.delphisources.ru/pages/fa...eate_hook.html )
Подробнее о механизме хуков :http://sources.ru/delphi/dll/hooks_aspects.shtml

Лучше (понятнее) всего о хуках и перехватах у Рихтера описанно

Последний раз редактировалось Jes; 03.06.2008 в 13:18..
 
Ответить с цитированием

  #5  
Старый 03.06.2008, 13:32
hub00
Новичок
Регистрация: 02.06.2008
Сообщений: 4
Провел на форуме:
12856

Репутация: 0
По умолчанию

Изучал я их .
Вроде ж делаю как в них и описывается.
 
Ответить с цитированием

  #6  
Старый 03.06.2008, 16:43
0verbreaK
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме:
379101

Репутация: 136
По умолчанию

Цитата:
Сообщение от hub00  
Изучал я их .
Вроде ж делаю как в них и описывается.

Вот хорошая статья, с практическим рассмотрением хуков, на мышку, правда язык, ассемблер.
http://www.wasm.ru/article.php?article=1001024
 
Ответить с цитированием

  #7  
Старый 05.06.2008, 01:31
hub00
Новичок
Регистрация: 02.06.2008
Сообщений: 4
Провел на форуме:
12856

Репутация: 0
По умолчанию

Вопрос маленький.
Вот я получаю дескрипторе текущего курсора для текущей формы.
a:=GetCursor();
А как сделать так чтоб я его получал за её пределами (глобальный дескриптор курсор)?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ловушка для взломщика k00p3r Чужие Статьи 0 08.06.2005 16:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ