Текущий архив: 2002.06.13;
Скачать: CL | DM;
Вниз
Ошибка в глобальном хуке? Найти похожие ветки
← →
IGOREK © (2002-04-10 02:57) [0]Происходит ошибка, когда переводим мышку за пределы окна программы:
unit HookUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
function HookProc1(HookCode: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
HookHandle1: hHook;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function HookProc1(HookCode: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT;
begin
Result := CallNextHookEx(Form1.HookHandle1, HookCode, wparam, lparam);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
HookHandle1 := SetWindowsHookEx(WH_Mouse, HookProc1, hInstance, 0);
end;
end.
← →
Alx2 © (2002-04-10 08:10) [1]Вот это "SetWindowsHookEx(WH_Mouse, HookProc1, hInstance, 0);"
исправить надо на это
"SetWindowsHookEx(WH_Mouse, HookProc1, hInstance, GetCurrentThreadID);"
Иначе криво пытается сделаться глобальный хук.
← →
Fellomena (2002-04-10 10:47) [2]SetWindowsHookEx(WH_Mouse, HookProc1, hInstance, 0); // попытка установить глобальный хук, который по определению не возможно установить из *.exe файла
Alx2 правильно сказал:
SetWindowsHookEx(WH_Mouse, HookProc1, hInstance, GetCurrentThreadID); // устанавливает хук в контексте данного потока
← →
IGOREK © (2002-04-10 13:14) [3]Как же тогда сделать глобальный хук напр. на мышку? (через DLL?)
← →
Fellomena (2002-04-10 13:21) [4]...и только в DLL - иного пути нет.
(см. статьи на этом сайте)
Страницы: 1 вся ветка
Текущий архив: 2002.06.13;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.01 c