Вверх ↑
Этот топик читают: Гость
Ответов: 307
Рейтинг: 26
#1: 2023-03-16 07:27:10 ЛС | профиль | цитата
Что можно использовать вместо KeyHook?
Меня интересует параметр KeyHook Хранит идентификатор активной, в данный момент формы
Захват кнопок совсем не интересует.
Мне бы элемент с таким параметром или может как то можно получить с помощью InlineCode?
Add(MainForm,8841973,49,119)
{
Left=20
Top=105
Font=[Arial,8,0,0,1]
Visible=1
Enabled=1
BorderStyle=6
Icon=[ZIP7E03000078DA85933D4FC25014868F7170D4C9B8E1E8AF5113D10A9B1F1844211A5DFC2A6D3151900A0624E0E20028514417A1202438D8326034E20F50A3A29B6E8EBE7C04A40668CFBDBD7DEF73CF3DE7DC96A803774F0FA1EF236327512F110DA041A27EAAE8E5AB93DA5D72D899B14F25582D2CED98928FC466A412742479A6E0B7BC47B9CFF34D1806784D0A8C12DA51C159CF82EC9AFE880979AF29C58D25051D0C83DBFD3988B2DB90F52ED563083A00BF9EB070958BEC356C1A7143C41496E442CE8A08054ED0370BF52FA0849D858025EF31298D9E55BBDC7A4D0F010BAA91DE9E405E49EB58EBBA2197B72887D249ACF6E3DC86EC5AF3005031145962473F2FC08FB7E6256E1C7C9C1DC116A57838A68D7FAB1658DA3E89137CF05BEE7CF3CAF16ED37C43F67BBFF9F1C08C41692DCF1463426AB31A9224E8D5C90ABA728ED51894B0A8B8665E4FAD57824EE298CB95A11A990B8B298E299EF139B7A1E2BCFA3DF89665970189BF4436E26B553E611DCD7B8C3829C059CFA26AD3F8FAF0D3D1EA5762A7CEB3DA82DF8C306E820E75B978FDE5EA60CD2A62469CFD4FFE68889EBA1011FE0DDB3591EB9BA8FB8B48F3D3D84A9A88391ECCB58DE8790BCF43A25FC8FDF6F3]
link(onCreate,12436612:doEvent1,[])
}
Add(WinExec,3798068,721,273)
{
Mode=0
link(onExec,8841973:doClose,[(768,279)(768,341)(31,341)(31,146)])
link(FileName,10204642:Value,[(727,263)(664,263)(664,315)(629,315)])
}
Add(Memory,10204642,623,273)
{
link(onData,13078807:doData,[])
}
Add(Memory,4737679,525,273)
{
link(onData,8973459:doStrCat,[])
}
Add(Hub,12436612,112,133)
{
OutCount=4
link(onEvent1,16048870:doClose,[])
link(onEvent2,9525205:doLength,[])
link(onEvent3,11278311:doOperation,[(261,153)(261,202)])
link(onEvent4,5215999:doDelete,[(254,160)(254,279)])
}
Add(Dir,2940504,343,70)
{
}
Add(Delete,5215999,364,273)
{
link(onDelete,5490022:doValue,[])
link(Str,12527590:Var3,[(370,121)])
link(Position,11278311:Result,[(377,251)(384,251)])
link(Count,16350030:Value,[(384,256)(433,256)])
}
Add(Length,9525205,322,140)
{
link(onLength,6226864:doValue,[])
link(Str,12527590:Var1,[(328,121)])
}
Add(GetDataEx,12527590,343,116)
{
link(Data,2940504:CurrentDir,[])
}
Add(Memory,6226864,378,140)
{
}
Add(Math,11278311,378,196)
{
OpType=1
Op2=4
link(Op1,6226864:Value,[])
}
Add(Memory,16350030,427,196)
{
Default=Integer(4)
}
Add(StrCat,3912692,476,273)
{
Str1="""
link(onStrCat,4737679:doValue,[])
link(Str2,5490022:Value,[(489,263)(464,263)(464,315)(426,315)])
}
Add(Memory,5490022,420,273)
{
link(onData,3912692:doStrCat,[])
}
Add(StrCat,8973459,574,273)
{
Str2="HiAsm.exe""
link(onStrCat,10204642:doValue,[])
link(Str1,4737679:Value,[(580,263)(566,263)(566,315)(531,315)])
}
Add(KeyHook,2713214,175,63)
{
}
Add(WinTools,16048870,175,112)
{
link(Handle,2713214:Handle,[])
}
Add(DoData,13078807,672,273)
{
link(onEventData,3798068:doExec,[])
}


Редактировалось 1 раз(а), последний 2023-03-16 12:20:12
карма: 2
0
Ответов: 5227
Рейтинг: 587
#2: 2023-03-16 11:01:32 ЛС | профиль | цитата
Код не мой. Автор Иван

Add(MainForm,13376086,266,210)
{
Point(onClose)
Point(onKeyDown)
link(onCreate,2317400:SetHook,[])
link(onClose,2317400:UnHook,[])
}
Add(InlineCode,2317400,308,224)
{
WorkPoints=#7:SetHook|6:UnHook|
EventPoints=#7:onKeyUp|9:onKeyDown|10:onSysKeyUp|12:onSysKeyDown|8:onRepeat|
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|65: onKeyUp,onKeyDown,onSysKeyUp,onSysKeyDown,onRepeat: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;|22: KBH_KEYREPEAT = $DD;|4:var |12: Hook:HHOOK;|45: ret:procedure(param,code:integer) of object;|0:|4:type|24: LLKBH_STRUCT = record|11: vkCode,|13: ScanCode,|10: Flags,|15: Time:DWORD;|23: dwExtraInfo:PDWORD;|7: end;|33: PLLKBH_STRUCT = ^LLKBH_STRUCT;|1: |28:var kbh_struct:LLKBH_STRUCT;|0:|82:function HookProc(Code: integer; wParam:integer;lParam: LongInt): HRESULT;stdcall;|21:var kbh:LLKBH_STRUCT;|5:begin|44: kbh:=LLKBH_STRUCT(PLLKBH_STRUCT(lParam)^); |122: if (kbh_struct.vkCode = 0) and (kbh_struct.ScanCode = 0) and (kbh_struct.Flags = 0) then ret(wParam,kbh_struct.vkCode); |44: if kbh.Flags <> kbh_struct.Flags then begin|37: kbh_struct:=PLLKBH_STRUCT(lParam)^; |31: ret(wParam,kbh_struct.vkCode);|51: end else ret(KBH_KEYREPEAT,kbh_struct.vkCode); |55: result := CallNextHookEx(Hook, Code, wParam , lParam);|4:end;|0:|30:procedure THiAsmClass.SetHook;|5:begin|25: with kbh_struct do begin|12: vkCode:=6;|14: ScanCode:=6;|11: Flags:=5;|5: end;|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);|44: KBH_KEYREPEAT:_hi_OnEvent(onRepeat,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,[])
link(onRepeat,3658577:doWork5,[])
}
Add(ListBox,11565061,532,189)
{
Left=125
Top=35
Width=205
Height=180
}
Add(StrList,4095676,434,182)
{
Strings=#15:Опущена клавиша|14:Нажата клавиша|25:Опущена системная клавиша|24:Нажата системная клавиша|20:Удерживается клавиша|
Point(doGetString)
Point(onGetString)
link(onGetString,9575750:doString,[])
}
Add(ChanelToIndex,3658577,357,224)
{
Count=5
Point(Data)
link(onIndex,4095676:doGetString,[])
}
Add(FormatStr,9575750,476,189)
{
link(onFString,11565061:doAdd,[])
link(Str2,3658577:Data,[(489,177)(426,177)(426,268)(363,268)])
}

карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 307
Рейтинг: 26
#3: 2023-03-16 12:12:39 ЛС | профиль | цитата
Извиняюсь что неправильно задал вопрос.
Меня интересует параметр KeyHook Хранит идентификатор активной, в данный момент формы
Захват кнопок совсем не интересует.
Мне бы элемент с таким параметром или может как то можно получить с помощью InlineCode?

Дело в том что антивирус ругается на hook.dll
Прилепил в HiAsm перезагрузку а потом обнаружил что антивирус удаляет hook.dll
restart.gif

Редактировалось 1 раз(а), последний 2023-03-16 12:18:08
карма: 2
0
Ответов: 263
Рейтинг: 18
#4: 2023-03-16 14:03:39 ЛС | профиль | цитата
Элемент WinEnum точка GetActiveWindow (Содержит идентификатор активного окна Windows)


Add(WinEnum,7115059,294,133)
{
Point(GetActiveWindow)
}
Add(MainForm,8841973,168,203)
{
Left=20
Top=105
Font=[Arial,8,0,0,1]
Visible=1
Enabled=1
BorderStyle=6
Icon=[ZIP7E03000078DA85933D4FC25014868F7170D4C9B8E1E8AF5113D10A9B1F1844211A5DFC2A6D3151900A0624E0E20028514417A1202438D8326034E20F50A3A29B6E8EBE7C04A40668CFBDBD7DEF73CF3DE7DC96A803774F0FA1EF236327512F110DA041A27EAAE8E5AB93DA5D72D899B14F25582D2CED98928FC466A412742479A6E0B7BC47B9CFF34D1806784D0A8C12DA51C159CF82EC9AFE880979AF29C58D25051D0C83DBFD3988B2DB90F52ED563083A00BF9EB070958BEC356C1A7143C41496E442CE8A08054ED0370BF52FA0849D858025EF31298D9E55BBDC7A4D0F010BAA91DE9E405E49EB58EBBA2197B72887D249ACF6E3DC86EC5AF3005031145962473F2FC08FB7E6256E1C7C9C1DC116A57838A68D7FAB1658DA3E89137CF05BEE7CF3CAF16ED37C43F67BBFF9F1C08C41692DCF1463426AB31A9224E8D5C90ABA728ED51894B0A8B8665E4FAD57824EE298CB95A11A990B8B298E299EF139B7A1E2BCFA3DF89665970189BF4436E26B553E611DCD7B8C3829C059CFA26AD3F8FAF0D3D1EA5762A7CEB3DA82DF8C306E820E75B978FDE5EA60CD2A62469CFD4FFE68889EBA1011FE0DDB3591EB9BA8FB8B48F3D3D84A9A88391ECCB58DE8790BCF43A25FC8FDF6F3]
link(onCreate,12436612:doEvent1,[])
}
Add(WinExec,3798068,840,357)
{
Mode=0
link(onExec,8841973:doClose,[(887,363)(887,425)(150,425)(150,230)])
link(FileName,10204642:Value,[(846,347)(783,347)(783,399)(748,399)])
}
Add(Memory,10204642,742,357)
{
link(onData,13078807:doData,[])
}
Add(Memory,4737679,644,357)
{
link(onData,8973459:doStrCat,[])
}
Add(Hub,12436612,231,217)
{
OutCount=4
link(onEvent1,16048870:doClose,[])
link(onEvent2,9525205:doLength,[])
link(onEvent3,11278311:doOperation,[(380,237)(380,286)])
link(onEvent4,5215999:doDelete,[(373,244)(373,363)])
}
Add(Dir,2940504,462,154)
{
}
Add(Delete,5215999,483,357)
{
link(onDelete,5490022:doValue,[])
link(Str,12527590:Var3,[(489,205)])
link(Position,11278311:Result,[(496,335)(503,335)])
link(Count,16350030:Value,[(503,340)(552,340)])
}
Add(Length,9525205,441,224)
{
link(onLength,6226864:doValue,[])
link(Str,12527590:Var1,[(447,205)])
}
Add(GetDataEx,12527590,462,200)
{
link(Data,2940504:CurrentDir,[])
}
Add(Memory,6226864,497,224)
{
}
Add(Math,11278311,497,280)
{
OpType=1
Op2=4
link(Op1,6226864:Value,[])
}
Add(Memory,16350030,546,280)
{
Default=Integer(4)
}
Add(StrCat,3912692,595,357)
{
Str1="""
link(onStrCat,4737679:doValue,[])
link(Str2,5490022:Value,[(608,347)(583,347)(583,399)(545,399)])
}
Add(Memory,5490022,539,357)
{
link(onData,3912692:doStrCat,[])
}
Add(StrCat,8973459,693,357)
{
Str2="HiAsm.exe""
link(onStrCat,10204642:doValue,[])
link(Str1,4737679:Value,[(699,347)(685,347)(685,399)(650,399)])
}
Add(KeyHook,2713214,238,133)
{
}
Add(WinTools,16048870,294,196)
{
link(Handle,7115059:GetActiveWindow,[(300,180)(307,180)])
}
Add(DoData,13078807,791,357)
{
link(onEventData,3798068:doExec,[])
}
карма: 3

0
Ответов: 307
Рейтинг: 26
#5: 2023-03-16 15:43:35 ЛС | профиль | цитата
fox-video писал(а):
Элемент WinEnum точка GetActiveWindow

Спасибо.
Работает
карма: 2
0
Ответов: 783
Рейтинг: 168
#6: 2023-03-16 19:28:49 ЛС | профиль | цитата
envoy_sky писал(а):
Прилепил в HiAsm перезагрузку

А если пойти другим путём?

Add(MainForm,8841973,266,217)
{
Left=20
Top=105
Font=[Arial,8,0,0,1]
BorderStyle=3
Icon=[ZIP7E03000078DA85933D4FC25014868F7170D4C9B8E1E8AF5113D10A9B1F1844211A5DFC2A6D3151900A0624E0E20028514417A1202438D8326034E20F50A3A29B6E8EBE7C04A40668CFBDBD7DEF73CF3DE7DC96A803774F0FA1EF236327512F110DA041A27EAAE8E5AB93DA5D72D899B14F25582D2CED98928FC466A412742479A6E0B7BC47B9CFF34D1806784D0A8C12DA51C159CF82EC9AFE880979AF29C58D25051D0C83DBFD3988B2DB90F52ED563083A00BF9EB070958BEC356C1A7143C41496E442CE8A08054ED0370BF52FA0849D858025EF31298D9E55BBDC7A4D0F010BAA91DE9E405E49EB58EBBA2197B72887D249ACF6E3DC86EC5AF3005031145962473F2FC08FB7E6256E1C7C9C1DC116A57838A68D7FAB1658DA3E89137CF05BEE7CF3CAF16ED37C43F67BBFF9F1C08C41692DCF1463426AB31A9224E8D5C90ABA728ED51894B0A8B8665E4FAD57824EE298CB95A11A990B8B298E299EF139B7A1E2BCFA3DF89665970189BF4436E26B553E611DCD7B8C3829C059CFA26AD3F8FAF0D3D1EA5762A7CEB3DA82DF8C306E820E75B978FDE5EA60CD2A62469CFD4FFE68889EBA1011FE0DDB3591EB9BA8FB8B48F3D3D84A9A88391ECCB58DE8790BCF43A25FC8FDF6F3]
link(onCreate,12436612:doEvent1,[])
}
Add(WinExec,3798068,406,287)
{
link(onExec,2292394:doWork,[(451,293)(451,347)(186,347)(186,245)])
link(FileName,3609987:Value,[])
}
Add(Hub,12436612,322,231)
{
OutCount=4
link(onEvent1,616877:doFind,[(347,237)(347,146)])
link(onEvent2,3609987:doValue,[])
link(onEvent3,16048870:doClose,[(361,251)(361,216)])
link(onEvent4,16627810:doDeferredEvent,[(347,258)(347,293)])
}
Add(WinTools,16048870,399,189)
{
Point(FileName)
link(Handle,616877:Handle,[])
}
Add(FindWindow,616877,399,140)
{
ClassName="TForm1"
SkipParam=1
}
Add(Check,2292394,192,239)
{
Check=1
link(onEvent,8841973:doClose,[(249,245)(249,244)])
}
Add(Memory,3609987,406,238)
{
Point(Data)
link(Data,16048870:FileName,[])
}
Add(DeferredEvent,16627810,357,287)
{
Delay=1000
link(onDeferredEvent,3798068:doExec,[])
}

карма: 15

0
Ответов: 307
Рейтинг: 26
#7: 2023-03-16 21:00:05 ЛС | профиль | цитата
Gunta писал(а):
А если пойти другим путём?

Вариант довольно не плохой.

Gunta, fox-video, andrestudio
ВСЕМ СПАСИБО ЧТО ОТКЛИКНУЛИСЬ.

Редактировалось 3 раз(а), последний 2023-03-16 21:07:57
карма: 2
0
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)