powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Затуп с хуком SetWindowsHookEx
2 сообщений из 2, страница 1 из 1
Затуп с хуком SetWindowsHookEx
    #40125791
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делаю хук, но он, судя по всему, не вызывается, хотя установка проходит без ошибок.

Прога
Код: pascal
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.
program CustomKBApp;

{$R *.res}

uses
  Windows,
  System.SysUtils;

var
  hHookLib: HMODULE;
  HookProc: TFNHookProc;
  hHook: Windows.HHOOK;
begin
  hHookLib := LoadLibrary('CustomKBHookLib.dll');
  if hHookLib = 0 then
    Exit;
  @HookProc := GetProcAddress(hHookLib, 'HookProc');
  if not Assigned(@HookProc) then
    Exit;
  hHook := SetWindowsHookEx(WH_KEYBOARD_LL, @HookProc, hHookLib, 0);
  if hHook = 0 then
    Exit;

OutputDebugString('hook installed');
Sleep(20000);

  UnhookWindowsHookEx(hHook);
OutputDebugString('hook removed');
  FreeLibrary(hHookLib);
end.



DLL
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
library CustomKBHookLib;

uses
  Windows, Messages, 
  System.SysUtils;

{$R *.res}

function HookProc(code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall;
begin
  OutputDebugString('hook');
  Result := CallNextHookEx(0, code, wParam, lParam);
end;

exports
  HookProc;

begin
end.



В мониторинге сообщения только от проги:
[4696] hook installed
[4696] hook removed

хотя нажатия на клавиши заметно подтормаживают. С разрядностями игрался (пробовал и 32, и 64). В ProcessExplorer в списке DLL у процессов моя HookLib нигде не видна. Что-то никак не могу взять в толк, где проблема. XE2, W7
...
Рейтинг: 0 / 0
Затуп с хуком SetWindowsHookEx
    #40125800
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм. А из гуевого приложения установка работает. Выходит, вызывающий процесс должен крутить цикл. Попробовал вместо Sleep вставить "while GetMessage(msg, 0, 0, 0) do;" - пустой, т.к. и окон-то никаких нет. Сработало.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Затуп с хуком SetWindowsHookEx
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]