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

Вниз

Отследить вращение колесика мыши в мышки вне приложения   Найти похожие ветки 

 
Michael   (2004-07-19 10:02) [0]

отловить направление движения скролла мышки вне приложения
Я поставил Hook на мышь.
var HookHandle: hHook;

function HookProc(Code:integer; WParam:word; LParam:Longint):Longint; stdcall;
var msg: PEVENTMSG;
begin
if Code >= 0 then begin
result := 0;
msg := Pointer(LParam);
if msg.message = WM_MOUSEMOVE then Form1.Caption:= IntToStr(msg.ParamL)+" x "+IntToStr(msg.ParamH);
if msg.message = WM_MOUSEWHEEL then beep;

end else result:= CallNextHookEx(HookHandle, code, WParam, LParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if HookHandle > 0 then UnhookWindowsHookEx(HookHandle);
end;

Все работает кроме одного.
Не знаю как отловить направление движения скролла мышки?
Сообщения от скролла идут if msg.message = WM_MOUSEWHEEL then
а как их обработать чтобы узнать вверх поворачивается колесо
или вниз?


 
Michael   (2004-07-26 14:34) [1]

Неужели никто не знает


 
Subdigger ©   (2004-07-26 14:38) [2]

procedure WMVScroll(var Msg: TWMVScroll); message WM_VSCROLL;


 
Subdigger ©   (2004-07-26 14:39) [3]

procedure TCustomGrid.WMVScroll(var Msg: TWMVScroll);
begin
 ModifyScrollBar(SB_VERT, Msg.ScrollCode, Msg.Pos, True);
end;


 
Michael   (2004-07-26 18:15) [4]

Subdigger ©   (26.07.04 14:39) [3]
Делфи не знает что такое "ModifyScrollBar"


 
KSergey ©   (2004-07-27 07:06) [5]

wParam
...
The high-order word indicates the distance the wheel is rotated, expressed in multiples or divisions of WHEEL_DELTA, which is 120. A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user.

Так гласит MSDN
Наверняка в исходниках VCL можно что-либо поискать, или в RxLib.


 
Serge_ ©   (2004-07-27 08:17) [6]

Вот как я это делал:

rocedure THexViewCtrl.WHEEL_ROLL(Var message:TWMMouseWheel);
var Dn:boolean;
begin
Inherited;
if F_ScrollBar=nil then exit;
//ShowWindow(hinter.Handle,sw_hide);
Dn:=Message.WheelDelta<0;
if Dn then F_ScrollBar.Position:=F_ScrollBar.Position+1
else F_ScrollBar.Position:=F_ScrollBar.Position-1;
end;


 
Michael   (2004-07-27 11:13) [7]

Serge_ ©   (27.07.04 08:17) [6]
Ваш пример работает.
Но только когда приложение активно.
Мне нужно отловить направление движения скролла мышки не зависимо приложение активно или нет.


 
Digitman ©   (2004-07-27 11:35) [8]


> Michael   (27.07.04 11:13) [7]


> Мне нужно отловить направление движения скролла мышки не
> зависимо приложение активно или нет


глоб.хук подходит для перехвата сист.событий/сообщений, ассоциированных только с GUI-приложениями

иными словами, если в дан.момент активно окно некоего консольного Win32-приложения, то хоть до дырки протирай в этот момент мышью коврик - глоб.хук не поможет


 
WondeRu ©   (2004-07-27 12:13) [9]

2Michael
однозначно, используй DirectInput! Разбираться будешь минут 15!


 
Michael   (2004-07-28 07:48) [10]

WondeRu ©   (27.07.04 12:13) [9]
Спасибо попробою DirectInput.
Если честно неразу с ним не имел дела.



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

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

Наверх




Память: 0.46 MB
Время: 0.036 c
14-1090393004
Nikolay M.
2004-07-21 10:56
2004.08.08
Тренажеры для печати вслепую


14-1090415459
Piter
2004-07-21 17:10
2004.08.08
Эксперименты с русским языком в английской windows


14-1090473602
syte_ser78
2004-07-22 09:20
2004.08.08
Есть ли негры блондины?


14-1090499163
menart
2004-07-22 16:26
2004.08.08
Linux


4-1088085689
DeMoN_Astra
2004-06-24 18:01
2004.08.08
ShellExecute - как запустить app свернутым?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский