Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.58/40: Рейтинг темы: голосов - 40, средняя оценка - 4.58
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1

Избитая тема о хуках

07.03.2012, 17:45. Показов 8519. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно поставить хук на мышу. прочитал несколько умных статей о хуках.
написал ДЛЛ с хук-процедурой, для мониторинга хука посылаю сообщение WM_USER
приложению-монитору. Вроде все по учебнику, так сказать. Но хук работает только
когда курсор находится в пределах окна приложения, вызвавшего ДЛЛ с хук-процедурой.
В чем трабл? с клавиатурным хуком (WH_KEYBOARD) та же фигня...

код библиотеки
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
library HookLib;
 
uses
  Windows,
  Dialogs,
  Messages;
 
var
  // хэндл окна, которому посылаем сообщение из хук-процедуры
  LogHWND: THandle;
  HOOK_HANDLE: HHOOK;
 
function MouseHook(Code: integer; WParam,LParam: DWORD): DWORD; stdcall;
begin                
  // -- цитата из справки Delphi --
  {wParam
     Specifies the identifier of the mouse message. }
  Result:= CallNextHookEx(HOOK_HANDLE,Code,WParam,LParam);
  if Code = HC_ACTION then
  // посылаю окну сообщение с указанием идентификатора мышиного
  // события (WParam)
  SendMessage(LogHWND,WM_USER,WParam,0);
end;
 
procedure SetMouseHook(LogWindow: THandle);
begin
  LogHWND:= LogWindow;
  HOOK_HANDLE:= SetWindowsHookEx(WH_MOUSE,@MouseHook,HInstance,0);
end;
 
procedure UnHook;
begin
  if HOOK_HANDLE <> 0 then begin
    UnHookWindowshookEx(HOOK_HANDLE);
    HOOK_HANDLE:= 0;
  end;
end;
 
exports
  SetMouseHook, UnHook;
 
begin
  LogHWND:= 0;
  HOOK_HANDLE:= 0;
end.
модуль интерфейса библиотеки
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
unit HookLib_Int;
 
interface
 
uses
  Windows;
 
  procedure SetMouseHook(LogWindow: THandle); external 'HookLib.dll';
  procedure UnHook; external 'HookLib.dll';
 
implementation
 
end.
код приложения-монитора
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    procedure WMUser(var Msg: TMessage); message WM_USER;
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
uses HookLib_Int;
 
{$R *.dfm}
 
procedure TForm1.FormShow(Sender: TObject);
begin          
  // посылаю ДЛЛ свой хэндл
  SetMouseHook(Handle);
end;
 
procedure TForm1.WMUser(var Msg: TMessage);
begin
  // принимаю из хук-процедуры идентификатор
  // мышиного события
  inherited;
  Memo1.Lines.Add(IntToStr(Msg.WParam));
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  UnHook;
end;
 
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.03.2012, 17:45
Ответы с готовыми решениями:

Избитая тема про StringGrid и числовую матрицу
Подскажите пожалуйста, каким образом числовую матрицу из текстового файла отобразить в StringGrid. Если не сложно то было бы хорошо...

избитая тема кирилицы в qt
Вот уже ничего не могу понять: QStringList codecs; codecs.append(&quot;IBM 866&quot;); codecs.append(&quot;KOI8-R&quot;); ...

Избитая тема Treeview
Всем доброго дня! Улучшаю сделанную своими руками БД в MS Access и пришел к выводу, что без &quot;дерева&quot; (Treeview) не обойтись....

21
0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 54
22.01.2015, 18:51
Студворк — интернет-сервис помощи студентам
киньте кто нибудь ссылку на библиотеку хуков. ни где найти не могу, даже на сайте виндовс(
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
22.01.2015, 21:10
Цитата Сообщение от Дмитрий96 Посмотреть сообщение
даже на сайте виндовс
Интересно что конкретно ты там искал ?
Уж не БиблиотекаХуков.dll ли ?)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.01.2015, 21:10

Избитая тема - перетаскивание формы
Добрый день всем! Вопрос такой, облазил уже весь интернет, но не могу найти то что надо. Есть форма, на ней куча контролов, которые...

Знаю что тема избитая но - ХП на ВИСТУ
Ноутбук АСУС точную модель сказать не могу - не мой. Была установлена Виста которая блогополучна сдохла - не грузиться не рекавериться...

Восстановление после clean (избитая тема)
И так, господа. Есть физ. носитель на 1 тб (где то 980 гб юзабельного пространства). Был в разметке MRB. Было 2 раздела. Первый на 100 ГБ...

Избитая тема про блокировку по условию
Прочитал на форуме о блокировке полей и форм по условию и никак не получается применить для своей базёнки. Короче о проблеме: в...

Как сохранить string данные в DOC,PDF (избитая тема)?
Всем доброго времени суток. Есть класс контейнер в котором храняться данные я через ovveride ToString() все их собираю. И через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru