Форум: "WinAPI";
Текущий архив: 2002.11.28;
Скачать: [xml.tar.bz2];
Внизлокальный хук из своего компонента Найти похожие ветки
← →
Diamond Cat (2002-10-11 00:59) [0]в созданом компоненте ставлю локальный хук, но что-то видимо не так так как программа умирает
вот примерный код
unit mycomponent;
interface
uses
///
type
Tmycomponent = class (TCustomControl)
protected
function MouseProc(Code, W,l : Integer): LongInt;
end;
implementation
var
HookHandle: HHOOK = 0;
constructor Tmycomponent.Create (AOwner: TComponent);
begin
inherited Create (AOwner);
end;
function tmycomponentr.MouseProc(Code, W,l : Integer): LongInt;
var
j,i:integer;
begin
if Code =HC_ACTION
then
begin
///// допустим ничего не делаем
end ;
Result :=CallNextHookEx(HookHandle, Code, W,L ); программа дохнет тут
end;
procedure Tmycomponent.CreateHandle;
var
HRegion1: THandle;
begin
inherited;
HRegion1 := CreatePolygonRgn (Pts,
sizeof (Pts) div 8, winding);
SetWindowRgn (Handle, HRegion1, True);
HookHandle := SetWindowsHookEx(WH_Mouse,@tmycomponent.MouseProc,0,GetCurrentThreadid);
end;
destructor Tmycomponent.Destroy;
begin
UnHookWindowsHookEx(HookHandle);
end;
end.
в чем проблема?
← →
vidiv (2002-10-11 06:23) [1]Пользуйся: TRxWindowHook!!!, Для локальных хуков
← →
Rouse_ (2002-10-11 06:37) [2]W и L сделай Longint, мож отпустит ;)
← →
Song (2002-10-11 09:14) [3]Вызов call-back ф-ии хука должен быть stdcall !!!
← →
Diamond Cat (2002-10-11 22:29) [4]2 vidiv спасибо конечно за совет но мне не нужен чужой компонент
2 Rouse_ не понятно как это может повлиять на результат (собственно и не повлияло) :о)
2 Song результат все равно плачевный
блин что-же делать, пойду разбирать на запчасти TRxWindowHook :-)
← →
Song (2002-10-11 22:31) [5]В статьях про хук отлично работающие примеры. Лучше разбирайте их.
← →
Diamond Cat (2002-10-11 23:11) [6]не заметил там примера с локальным хуком
← →
Cobalt (2002-10-14 11:18) [7]Слона-то никто и не заметил ;)
HookHandle := SetWindowsHookEx(WH_Mouse, @tmycomponent.MouseProc, 0, GetCurrentThreadid);
Процедура, передаваемая хуку, не должна быть методом класса!(ИМХО)
← →
Diamond Cat (2002-10-14 23:53) [8]с этим я уже и сам разобрался теперь борюсь с тем, чтоб передать из MouseProc управление процедуре описанной в public, пока ничего умнее чем sendmessage не придумал, а грабли в том, что приходится хендл экземпляра компонента запихивать в глобальную переменную, соответственно сообщение получает только последний экземпляр, кто-нить может посоветовать более путевый подход?
← →
Cobalt (2002-10-16 13:37) [9]> Diamond Cat © (14.10.02 23:53
Нужен ли тебе именно компонент ?
Если да, то надо организовывать список компонент(своих), устанавливаешь св-ва, права и очередь получения информации от одного хука(его ставит самый первый компонент, которому надо, остальные проверяют, установлен хук уже, или нет).
В общем, возьми бумагу, ручку, и рисуй схему взаимодействия хука, компонент и всего прочего.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.11.28;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c