Вверх ↑
Этот топик читают: Гость
Ответов: 1
Рейтинг: 0
#1: 2021-04-12 11:12:45 ЛС | профиль | цитата
Доброго времени!
Поделись схемой экранной клавиатуры.
Ранее выкладывали, но все ссылки мертвые.
Саму клавиатуру я сделал, не проблема, проблема в том что она перехватывает фокус, соответственно приложение в котором должен осуществляться ввод, фокус теряет(
Т.е. нужно сделать по аналогии с родной экранной клавиатурой win, кнопки нажимаешь, а фокус она не забирает.
карма: 0

0
Ответов: 253
Рейтинг: 0
#2: 2021-06-01 14:14:45 ЛС | профиль | цитата
Попробуй так. Не знаю на сколько это корректно. Сделал на скорую руку)
Код


Add(MainForm,2953706,392,196)
{
Width=202
Height=106
MouseCapture=0
Point(onMouseDown)
Point(Handle)
link(onCreate,15660455:doWork1,[(436,216)(436,283)(380,283)(380,300)])
}
Add(Button,8551150,70,322)
{
Left=15
Top=7
Width=49
Height=30
Caption="q"
Data=String(81)
link(onClick,13303320:doEvent1,[])
}
Add(KeyEvent,12771519,385,441)
{
link(Code,7767777:Value,[])
}
Add(MultiElement,15660455,392,294)
{
link(Data1,8540612:Var2,[])
}
BEGIN_SDK
Add(EditMulti,10815696,21,21)
{
EventCount=1
WorkCount=1
DataCount=1
VarCount=1
link(doWork1,14689455:doValue,[(63,27)(63,76)])
link(Var1,6711443:Value,[(27,200)(230,200)])
}
Add(Memory,14689455,105,70)
{
Point(Data)
link(Data,10815696:Data1,[(111,46)(27,46)])
}
Add(If_else,12776595,161,140)
{
Op1=String()
Op2=String()
link(onFalse,6711443:doValue,[])
link(Op1,14689455:Value,[(167,114)(111,114)])
link(Op2,15535062:Var1,[(174,121)])
}
Add(WinEnum,161480,224,70)
{
Point(GetActiveWindow)
}
Add(Memory,6711443,224,147)
{
Point(Data)
link(onData,10815696:onEvent1,[(288,153)(288,27)])
link(Data,15535062:Var2,[(230,136)(223,136)])
}
Add(GetDataEx,15535062,217,116)
{
Angle=1
link(Data,161480:GetActiveWindow,[(237,121)])
}
Add(Timer,7874678,91,147)
{
Interval=100
link(onTimer,12776595:doCompare,[(142,153)(142,146)])
}
END_SDK
Add(LineBreakEx,13849242,154,336)
{
}
Add(LineBreakEx,11289450,343,399)
{
Type=1
link(OnEvent,7767777:doValue,[])
}
Add(Memory,7767777,392,399)
{
link(onData,12771519:doPress,[(436,405)(436,426)(373,426)(373,447)])
}
Add(WinTools,3732395,392,336)
{
link(Handle,15660455:Var1,[])
}
Add(LineBreakEx,9442132,154,322)
{
Caption="-"
}
Add(Hub,13303320,119,322)
{
link(onEvent1,9442132:doWork,[])
link(onEvent2,13849242:doWork,[(143,335)(143,342)])
}
Add(LineBreakEx,10609197,350,350)
{
Caption="-"
Type=1
link(OnEvent,3732395:doActive,[])
}
Add(hcVisualText,11977813,70,287)
{
Lines=#26:Код клавиши внутри кнопки |
Width=81
Height=32
}
Add(Button,10703519,69,364)
{
Left=70
Top=7
Width=49
Height=30
Caption="w"
Data=String(87)
link(onClick,10153896:doEvent1,[])
}
Add(LineBreakEx,12277465,154,378)
{
}
Add(LineBreakEx,1792880,154,364)
{
Caption="-"
}
Add(Hub,10153896,119,364)
{
link(onEvent1,1792880:doWork,[])
link(onEvent2,12277465:doWork,[(143,377)(143,384)])
}
Add(Button,8599507,69,406)
{
Left=125
Top=7
Width=49
Height=30
Caption="e"
Data=String(69)
link(onClick,13539557:doEvent1,[])
}
Add(LineBreakEx,11695554,154,420)
{
}
Add(LineBreakEx,704111,154,406)
{
Caption="-"
}
Add(Hub,13539557,119,406)
{
link(onEvent1,704111:doWork,[])
link(onEvent2,11695554:doWork,[(143,419)(143,426)])
}
Add(WinTools,12343445,343,245)
{
link(Handle,8540612:Var1,[(349,240)])
}
Add(CheckBox,10817532,287,252)
{
Left=20
Top=40
Width=150
Caption="Поверх окон"
link(onCheck,12343445:doPopup,[])
}
Add(GetDataEx,8540612,392,235)
{
link(Data,2953706:Handle,[])
}

карма: 0

0
Ответов: 263
Рейтинг: 18
#3: 2021-06-01 15:44:32 ЛС | профиль | цитата
Делал для себя подобное. Вот фрагмент схемы. https://forum.hiasm.com/getfile/39245
карма: 3

0
файлы: 1Project2.rar [4KB] [361]
Ответов: 775
Рейтинг: 168
#4: 2021-08-22 16:18:07 ЛС | профиль | цитата
А почему не использовать встроенную экранную клавиатуру?

Add(MainForm,12346820,126,70)
{
Height=177
Point(Handle)
}
Add(KeyEvent,9798208,322,63)
{
Code=91
}
Add(KeyEvent,11056287,322,105)
{
Code=79
Ctrl=1
}
Add(Hub,2282427,259,70)
{
OutCount=4
link(onEvent1,9798208:doPressDown,[])
link(onEvent2,11056287:doPress,[(298,83)(298,111)])
link(onEvent3,9798208:doPressUp,[(305,90)(305,83)])
link(onEvent4,8902251:doSetFocus,[(291,97)(291,188)])
}
Add(BitBtn,7527785,203,70)
{
Left=295
Top=20
Width=70
Height=70
Caption=""
Bitmap=[ZIP3640000078DAED9A410A83301045ED11728342363D40702DDDF720394AEE9A3B8C4EAB50868A48BB6832EFC15F4D1679825F30B93FC66978322EB92D99D65C86EB6BB0CEDF11000000000000007041AD5572CE124210FD25D053D449DDD471CF3DA5D49DB78D3A7E7A06A594EEDDB7A8AB25C6E8C65F5D2D76CDDE7BD26AAF59BF23FFDEC01FFF6FFC8F3AE5ECFAB3F9F57EF0C71F7FFA0F7FFCF197BFEFDBD6FB1F7FFC5BDE0FFD8F3FFE7CFF993367EE6F4EFFE3EFC9DFDBF997F7F34FEFE7DFDEEF3F6CCFC0EBFD170000000000F0C30C34CFA30A]
link(onClick,2282427:doEvent1,[])
}
Add(Memo,8902251,322,154)
{
Left=10
Top=10
Width=265
Height=120
ScrollBars=3
Point(doSetFocus)
}

карма: 15

0
Ответов: 263
Рейтинг: 18
#5: 2021-08-22 16:22:54 ЛС | профиль | цитата
Gunta писал(а):
А почему не использовать встроенную экранную клавиатуру?

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

Редактировалось 1 раз(а), последний 2021-08-22 16:23:13
карма: 3

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