Вверх ↑
Этот топик читают: Гость
Ответов: 17
Рейтинг: 0
#1: 2020-08-16 15:27:16 ЛС | профиль | цитата
Есть код найденный на просторах этого сайта, который отслеживает нажатие/перемещение мышки
Пример

Add(InlineCode,12360657,98,73)
{
@Hint=#24:Глобальный перехват мыши|
EventPoints=#2:ev|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,windows,messages;|0:|4:type|27: tagMSLLHOOKSTRUCT = record|12: pt:TPoint;|18: mouseData:dword;|14: flags:dword;|13: time:dword;|23: dwExtraInfo:^Cardinal|5: end;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|17: ev:THI_Event;|0:|23: constructor Create;|33: destructor Destroy; override;|0:|5: end;|0:|14:var H:THandle;|20: hac:THiAsmClass;|0:|14:implementation|0:|49:function hook(code,w,l:integer):Lresult; stdcall;|15:var str:string;|25: ll:tagMSLLHOOKSTRUCT;|15: d:LongWord;|5:begin|38: ll := tagMSLLHOOKSTRUCT(pointer(l)^);|0:|26: d := ll.mouseData shr 16;|46: if d and $8000 ‹› 0 then d := d or $FFFF0000;|0:|30: str := Int2Str(w)+Int2Str(d);|25: _hi_OnEvent(hac.ev,str);|38: result := CallNextHookEx(H,code,w,l);|4:end;|0:|31:constructor THiAsmClass.Create;|5:begin|18: inherited Create;|13: hac := self;|48: H := SetWindowsHookEx(14, @hook, hInstance, 0);|82: if H = 0 then messagebox(ReadHandle,'Ошибка перехвата мыши','ERROR',mb_iconhand);|4:end;|0:|31:destructor THiAsmClass.Destroy;|5:begin|24: UnhookWindowsHookEx(H);|19: inherited Destroy;|4:end;|0:|4:end.|
link(ev,4130651:doText2,[])
}
Add(Edit,4130651,147,66)
{
Width=70
Text=""
}

Так вот замечено, что через разное время он перестаёт работать. Помогите реализовать отслеживание, что этот код перестал работать и как-то его надо бы перезапустить.

Редактировалось 2 раз(а), последний 2020-08-16 15:31:58
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 1700
Рейтинг: 120
#2: 2020-08-20 19:04:46 ЛС | профиль | цитата
rav, у меня вообще не крмпилируется!
C:\HiAsm\Elements\delphi\code\hiInlineCode_244B310.pas(41) Error: Illegal character in input file: '<' ($8B)
А так?:

Add(MainForm,633411,189,63)
{
Position=1
Point(Handle)
link(onCreate,15561254:doPopup,[])
}
Add(InlineCode,12360657,336,301)
{
@Hint=#24:Глобальный перехват мыши|
EventPoints=#2:ev|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,windows,messages;|0:|4:type|27: tagMSLLHOOKSTRUCT = record|12: pt:TPoint;|18: mouseData:dword;|14: flags:dword;|13: time:dword;|23: dwExtraInfo:^Cardinal|5: end;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|17: ev:THI_Event;|0:|23: constructor Create;|33: destructor Destroy; override;|0:|5: end;|0:|14:var H:THandle;|20: hac:THiAsmClass;|0:|14:implementation|0:|49:function hook(code,w,l:integer):Lresult; stdcall;|15:var str:string;|25: ll:tagMSLLHOOKSTRUCT;|15: d:LongWord;|5:begin|38: ll := tagMSLLHOOKSTRUCT(pointer(l)^);|0:|26: d := ll.mouseData shr 16;|46: if d and $8000 <> 0 then d := d or $FFFF0000;|0:|30: str := Int2Str(w)+Int2Str(d);|25: _hi_OnEvent(hac.ev,str);|38: result := CallNextHookEx(H,code,w,l);|4:end;|0:|31:constructor THiAsmClass.Create;|5:begin|18: inherited Create;|13: hac := self;|48: H := SetWindowsHookEx(14, @hook, hInstance, 0);|82: if H = 0 then messagebox(ReadHandle,'Ошибка перехвата мыши','ERROR',mb_iconhand);|4:end;|0:|31:destructor THiAsmClass.Destroy;|5:begin|24: UnhookWindowsHookEx(H);|19: inherited Destroy;|4:end;|0:|4:end.|
link(ev,14423304:doAdd,[])
}
Add(Memo,14423304,392,301)
{
Left=10
Top=5
Width=160
Height=260
AddType=1
ScrollBars=2
}
Add(InfoTip,13344029,322,98)
{
Info=#20:5120 - движение мыши|55:522ХХХ - прокрутка колеса, где ХХХ - значение прокрутки|18:5130 - нажатие ЛКМ|21:5140 - отпускание ЛКМ|18:5160 - нажатие ПКМ|21:5170 - отпускание ПКМ|21:5190 - нажатие колеса|24:5200 - отпускание колеса|33:5231 - нажатие 1-й боковой кнопки|36:5241 - отпускание 1-й боковой кнопки|33:5232 - нажатие 2-й боковой кнопки|35:5242 - отпускание 2-й боковй кнопки|
Frame=2
Transparent=1
HAlign=0
Width=316
Height=172
Margin=5
}
Add(WinTools,15561254,238,70)
{
link(Handle,633411:Handle,[(244,58)(220,58)(220,107)(195,107)])
}

карма: 5

0
Ответов: 8594
Рейтинг: 795
#3: 2020-08-20 21:26:46 ЛС | профиль | цитата
flint2, который раз говорю: этот форум меняет символы больше ">" и меньше "<" на текстовые кавычки, поэтому и IC скопированный с форума с такими кавычками и не работает. (Вот и сейчас заменил ).
Этот IC рабочий (Win10, 64), отслеживает нажатия кнопок и скролл, правда выход без разделителей
карма: 18

0
Ответов: 1700
Рейтинг: 120
#4: 2020-08-20 21:47:23 ЛС | профиль | цитата
Леонид, о чём-то подобном догадывался...
этот форум меняет символы больше ">" и меньше "<" на текстовые кавычки

Опять не слава Богу. Разве можно держать в голове такие глупости - не одним сайтом единым...

Редактировалось 1 раз(а), последний 2020-08-20 21:51:16
карма: 5

0
Ответов: 1886
Рейтинг: 164
#5: 2020-09-09 15:56:57 ЛС | профиль | цитата
Понекрпостю, раз сразу не заметил.
Вот поинтереснее решение:
Add(InlineCode,10339731,252,399)
{
@Hint=#24:Глобальный перехват мыши|
EventPoints=#11:onMouseMove|13:onLButtonDown|11:onLButtonUp|13:onRButtonDown|11:onRButtonUp|11:onWheelDown|9:onWheelUp|8:onScroll|14:onX1ButtonDown|11:onX1BttonUp|14:onX2ButtonDown|11:onX2BttonUp|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,windows,messages;|0:|4:type|27: tagMSLLHOOKSTRUCT = record|12: pt:TPoint;|18: mouseData:dword;|14: flags:dword;|13: time:dword;|23: dwExtraInfo:^Cardinal|5: end;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|26: onMouseMove:THI_Event;|28: onLButtonDown:THI_Event;|26: onLButtonUp:THI_Event;|28: onRButtonDown:THI_Event;|26: onRButtonUp:THI_Event;|26: onWheelDown:THI_Event;|24: onWheelUp:THI_Event;|23: onScroll:THI_Event;|29: onX1ButtonDown:THI_Event;|27: onX1ButtonUp:THI_Event;|29: onX2ButtonDown:THI_Event;|27: onX2ButtonUp:THI_Event;|0:|23: constructor Create;|33: destructor Destroy; override;|0:|5: end;|0:|14:var H:THandle;|20: hac:THiAsmClass;|0:|14:implementation|0:|49:function hook(code,w,l:integer):Lresult; stdcall;|15:var str:string;|25: ll:tagMSLLHOOKSTRUCT;|15: d:LongWord;|5:begin|38: ll := tagMSLLHOOKSTRUCT(pointer(l)^);|0:|26: d := ll.mouseData shr 16;|46: if d and $8000 <> 0 then d := d or $FFFF0000;|0:|10: case w of|36: 512: _hi_OnEvent(hac.onMouseMove);|38: 513: _hi_OnEvent(hac.onLButtonDown);|36: 514: _hi_OnEvent(hac.onLButtonUp);|38: 516: _hi_OnEvent(hac.onRButtonDown);|36: 517: _hi_OnEvent(hac.onRButtonUp);|36: 519: _hi_OnEvent(hac.onWheelDown);|34: 520: _hi_OnEvent(hac.onWheelUp);|45: 522: _hi_OnEvent(hac.onScroll, int2str(d));|12: 523: begin|17: case d of|44: 1: _hi_OnEvent(hac.onX1ButtonDown);|44: 2: _hi_OnEvent(hac.onX2ButtonDown);|12: end;|11: end;|12: 524: begin|17: case d of|42: 1: _hi_OnEvent(hac.onX1ButtonUp);|42: 2: _hi_OnEvent(hac.onX2ButtonUp);|12: end;|11: end;|5: end;|38: result := CallNextHookEx(H,code,w,l);|4:end;|0:|31:constructor THiAsmClass.Create;|5:begin|18: inherited Create;|13: hac := self;|48: H := SetWindowsHookEx(14, @hook, hInstance, 0);|82: if H = 0 then messagebox(ReadHandle,'Ошибка перехвата мыши','ERROR',mb_iconhand);|4:end;|0:|31:destructor THiAsmClass.Destroy;|5:begin|24: UnhookWindowsHookEx(H);|19: inherited Destroy;|4:end;|0:|4:end.|
}

А что перестаёт работать: https://forum.hiasm.com/topic/67602.

Редактировалось 1 раз(а), последний 2020-09-09 15:57:13
карма: 7
0
Ответов: 17
Рейтинг: 0
#6: 2020-11-07 03:50:26 ЛС | профиль | цитата
3042, Протестирую это решение.
По причине понятно, спасибо.
карма: 0

0
6
Сообщение
...
Прикрепленные файлы
(файлы не залиты)