Add(MainForm,7740791,238,154) { Width=170 Height=137 BorderStyle=1 Point(Handle) Point(onKeyDown) } Add(Memo,10772723,413,133) { Left=45 Top=15 ReadOnly=0 } Add(InlineCode,6587607,329,154) { @Hint=#16:Перехват клавиш |16:вне зависимости |17:от места нажатия.|21:Реагирует на нажатия |21:клавиатуры даже если |27:сама программа не активна. | EventPoints=#5:onRes| Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses windows,kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|14: ii:integer;|17: FTimer:PTimer;|31: procedure OnTimer(Obj:PObj);|9: public|19: onRes:Thi_Event;|22: constructor Create;|35: destructor Destroy; override; |52:// procedure onTimer(var _Data:Tdata; Index:Word);|5: end;|0:|14:implementation|31:constructor THiAsmClass.Create;|5:begin|20: inherited Create;|26: FTimer := NewTimer(10);|26: FTimer.Enabled := True;|29: FTimer.OnTimer := onTimer;|15:// flag := 0;|4:end;|0:|31:destructor THiAsmClass.Destroy;|5:begin|65:// Этот костыль связан с некооректностью уничтожения класса в FPC|13:{$ifndef F_P}|15: FTimer.Free;|8:{$endif}|21: inherited Destroy;|4:end;|0:|30:procedure THiAsmClass.onTimer;|54: var i:integer; //Вспомогательная переменная для цикла|5:begin|45: for i:=0 to 255 do //Перебираем все клавиши|47: if (getasynckeystate(i)<>0) and (i<>ii) then |7: begin|10: ii:=i; |48: _hi_onEvent(onRes,ii); |6: end;|4:end;|4:end.| link(onRes,10772723:doText,[]) AddHint(-59,-119,151,78,@Hint) }