Add(MainForm,13376086,147,161) { Point(onClose) link(onCreate,2317400:SetHook,[]) link(onClose,2317400:UnHook,[]) } Add(InlineCode,2317400,196,175) { WorkPoints=#7:SetHook|6:UnHook| EventPoints=#7:onKeyUp|9:onKeyDown|10:onSysKeyUp|12:onSysKeyDown| Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,Windows,Messages;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|40: procedure onKey(param,code:integer);|9: public|56: onKeyUp,onKeyDown,onSysKeyUp,onSysKeyDown:THI_Event;|4: |46: procedure SetHook(var dt:TData; Idx:WORD);|45: procedure UnHook(var dt:TData; Idx:WORD);|5: end;|0:|14:implementation|0:|5:const|21: WH_KEYBOARD_LL = $D;|0:|4:var |12: Hook:HHOOK;|45: ret:procedure(param,code:integer) of object;|0:|82:function HookProc(Code: integer; wParam:integer;lParam: LongInt): HRESULT;stdcall;|5:begin|35: ret(wParam,PInteger(lParam)^); |55: result := CallNextHookEx(Hook, Code, wParam , lParam);|4:end;|0:|30:procedure THiAsmClass.SetHook;|5:begin|12: ret:=onKey;|64: Hook := SetWindowsHookEx(WH_KEYBOARD_LL,@HookProc,HInstance,0);|4:end;|0:|28:procedure THiAsmClass.onKey;|5:begin|16: Case Param of|45: WM_KEYDOWN :_hi_OnEvent(onKeyDown,code);|43: WM_KEYUP :_hi_OnEvent(onKeyUp,code);|48: WM_SYSKEYDOWN:_hi_OnEvent(onSysKeyDown,code);|46: WM_SYSKEYUP :_hi_OnEvent(onSysKeyUp,code);|9: end; |4:end;|0:|29:procedure THiAsmClass.UnHook;|5:begin|27: UnhookWindowsHookEx(Hook);|4:end;|0:|4:end.| link(onKeyUp,3658577:doWork1,[]) link(onKeyDown,3658577:doWork2,[]) link(onSysKeyUp,3658577:doWork3,[]) link(onSysKeyDown,3658577:doWork4,[]) } Add(ListBox,11565061,420,140) { Left=125 Top=35 Width=205 Height=180 } Add(StrList,4095676,322,133) { Strings=#15:Опущена клавиша|14:Нажата клавиша|25:Опущена системная клавиша|24:Нажата системная клавиша| Point(doGetString) Point(onGetString) link(onGetString,9575750:doString,[]) } Add(ChanelToIndex,3658577,245,175) { Count=4 Point(Data) link(onIndex,4095676:doGetString,[]) } Add(FormatStr,9575750,364,140) { link(onFString,11565061:doAdd,[]) link(Str2,3658577:Data,[(377,128)(314,128)(314,219)(251,219)]) }