Вверх ↑
Ответов: 94
Рейтинг: 2
#1: 2017-02-12 10:20:49 ЛС | профиль | цитата
Добрый день.
Разрабатываю приложение, которое будет отправлять сообщение в чат игры по нажатию горячей клавиши.
Что касается горячих клавиш - уже все готово и работает как задумано. Выложил схему в соответствующем разделе: http://forum.hiasm.com/topic/66343. Вдруг кому-то пригодится.
А вот с самой отправкой сообщения вышла проблема. Дело в том, что что-бы отправить сообщение, нужно:
1. Нажать F6, чем вызвать поле ввода сообщения;
2. Написать сообщение;
3. Нажать Enter - отправить сообщение.
Я решил проблему просто: эмуляция нажатия F6, вставляю текст (сделал через буфер обмена), эмуляция Enter. И такое решение работает со всеми клавишами и их комбинациями, кроме как с клавишей Alt. Дело в том, что Alt блокирует все клавиши, даже F6. То есть, если я на комбинацию Alt+1 установлю отправку текста в чат, то эмуляцию F6 и Enter возможно выполнить только когда Alt отпущен физически. Единственная разумная идея - отключить Alt на время эмуляции и потом включить.
Вот тот кусок схемы, который отвечает за отправку:

Add(Hub,12309349,1260,266)
{
OutCount=8
link(onEvent2,3047092:doPressUp,[(1320,279)(1320,251)])
link(onEvent3,11542843:doValue,[])
link(onEvent4,16191370:doSetText,[])
link(onEvent5,16191370:doPut,[])
link(onEvent6,11894525:doTimer,[(1345,307)(1345,335)])
link(onEvent7,4550138:doPressUp,[(1339,314)(1339,419)])
link(onEvent8,15271061:doTimer,[(1320,321)(1320,447)])
}
Add(GlobalVar,10397611,1386,371)
{
Name="13"
Data=Integer(13)
}
Add(GlobalVar,11015546,1372,203)
{
Name="117"
Data=Integer(117)
}
Add(ClipboardHook,16191370,1365,287)
{
link(Text,11640289:Value,[(1371,261)(1249,261)(1249,306)(1217,306)])
}
Add(Clipboard,1518316,1407,231)
{
Unicode=0
Point(PutText)
}
Add(Memory,11542843,1407,280)
{
Point(Data)
link(Data,1518316:Text,[])
}
Add(DoData,959419,1407,329)
{
link(onEventData,12345626:doPutText,[])
link(Data,11542843:Value,[])
}
Add(Timer,11894525,1365,329)
{
Interval=200
Enable=1
AutoStop=1
link(onTimer,959419:doData,[])
}
Add(Clipboard,12345626,1456,329)
{
Unicode=0
Point(PutText)
}
Add(KeyEvent,3047092,1365,231)
{
link(Code,11015546:Var,[])
}
Add(KeyEvent,4550138,1379,399)
{
Ctrl=1
link(Code,10397611:Var,[])
}
Add(Timer,15271061,1365,441)
{
Interval=800
Enable=1
AutoStop=1
}
Add(Memory,11640289,1211,266)
{
link(onData,12309349:doEvent1,[])
}

Поиск на форуме привел только к мифическому элементу Joke, но он мне не совсем подходит, так как он заблокирует всю клавиатуру, а мне нужна еще клавиша Enter. Да и сам элемент найти я не смог, что-бы поковырять изучить его.
Если есть у кого-то идеи лучше моих (отправка по отпусканию Alt или отключение Alt), то буду благодарен.
карма: 0

0