Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

Нужно чтобы хук работал по всей системе....   Найти похожие ветки 

 
Camedia   (2003-08-30 22:18) [0]

Я запускаю в приложении хук таким образом:

SetWindowsHookEx(WH_MOUSE, @HookProc, HInstance, 0);

Но он работает только в пределах формы. Можно ли сделать его рабочим на всём экране, при этом не запихивая его в DLL???


 
Yanis   (2003-08-30 22:43) [1]

Ты просто что то неправильно делаешь, всё должно работать.


 
Camedia   (2003-08-30 22:54) [2]

Я пытаюсь сделать что-то вроде пипетки. Код хукового фильтра такой:

function HookProc(Code: Integer; wParam: Word; lParam: Longint): Longint;
var msg : PMouseHookStruct;
begin
if Code < 0 then
begin
result := CallNextHookEx(OurHook, Code, wParam, lParam);
exit;
end;

msg := PMouseHookStruct(lParam);
if (wParam=WM_LBUTTONDOWN) then
begin
UnHookWindowsHookEx(ourHook);
result := -1;
Case MouseHookFrom of
1: begin
formMaskMaker.fbPickTransparentColor.Down := False;
formMaskMaker.fpTransparentColorSample.Color := GetPixel(GetDC(0), Msg^.pt.x, Msg^.pt.y);
end;
2: begin
formMaskMaker.fbPickMaskOuterColor.Down := False;
formMaskMaker.fpMaskOuterColorSample.Color := GetPixel(GetDC(0), Msg^.pt.x, Msg^.pt.y);
end;
3: begin
formMaskMaker.fbPickMaskImageColor.Down := False;
formMaskMaker.fpMaskImageColorSample.Color := GetPixel(GetDC(0), Msg^.pt.x, Msg^.pt.y);
end;
end;
MouseHookFrom := 0;
end
else
result := CallNextHookEx(ourHook, Code, wParam, lParam);
end;

К сожалению, если я щёлкаю вне формы, то хук не срабатывает (т.е. остаётся рабочим, потом можно щёлкнуть по форме и всё срабатывает).


 
Германн   (2003-08-31 02:54) [3]

> Camedia (30.08.03 22:18)
>Можно ли сделать его рабочим на всём экране, при этом не >запихивая его в DLL???

НИЗЗЗЯ! Читай умные книжки, статьи (в т.ч. на данном сайте).


 
Юрий Зотов   (2003-08-31 08:37) [4]

И кроме того, не забудьте про stdcall и глобальные данные.


 
Camedia   (2003-08-31 17:50) [5]

>И кроме того, не забудьте про stdcall и глобальные данные.

stdcall - это понятно, а что имеется ввиду под "глобальными данными"????


 
nikkie   (2003-08-31 19:23) [6]

имхо хуки здесь не особо нужны.

procedure WMLButtonDown(var Message: TMessage); message WM_LBUTTONDOWN;
procedure WMCaptureChanged(var Message: TMessage); message WM_CAPTURECHANGED;

procedure TForm1.Button1Click(Sender: TObject);
begin
Mouse.Capture := Handle;
end;

procedure TForm1.WMLButtonDown(var Message: TMessage);
var
p: TPoint;
begin
if Mouse.Capture <> Handle then Exit;
Mouse.Capture := 0;
p.X := Short(LoWord(Message.LParam));
p.Y := Short(HiWord(Message.LParam));
p := ClientToScreen(p);
ShowMessage(inttostr(p.X) + ", " + inttostr(p.Y));
end;

procedure TForm1.WMCaptureChanged(var Message: TMessage);
begin
end;


 
Camedia   (2003-08-31 20:26) [7]

А вот это уже дело...



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.048 c
1-41261
1234
2003-10-31 01:32
2003.11.13
Kak zastavit programmu otkrit htm file?


3-40940
Chaked
2003-10-24 22:40
2003.11.13
Что за глюк с русскоязычными записями???


4-42231
Yevg
2003-09-02 12:41
2003.11.13
Hooks, определение нажатой клавиши


1-41521
maestro
2003-10-28 07:55
2003.11.13
уничтожение компонента Button


4-42314
Алексей Петухов
2003-09-05 12:10
2003.11.13
Прозрачные окошки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский