Вверх ↑
Этот топик читают: Гость
Ответов: 34
Рейтинг: 0
#1: 2011-03-05 16:57:33 ЛС | профиль | цитата
code_22814.txt
В массиве три ячейки, по нажатию клавиши код пишется в очередную ячейку. Но если фокус у другого приложения, то может за одно нажатие забиваться две ячейки. Например, если в скайпе что-то писать. По нажатию кнопки последовательно выводится содержимое массива. Где косяк?
карма: 1

0
файлы: 1code_22814.txt [1.4KB] [152]
Ответов: 1379
Рейтинг: 86
#2: 2011-03-05 17:48:10 ЛС | профиль | цитата
Сделал для дебага более наглядный вариант, у меня ошибка не подтверждается code_22815.txt
карма: 0

0
файлы: 1code_22815.txt [1.2KB] [98]
Ответов: 34
Рейтинг: 0
#3: 2011-03-05 23:36:53 ЛС | профиль | цитата
petrocan, а ты где пробовал нажимать? Например, если у меня фокус на рабочем столе, то всё ровно. Если в браузере (хром), то тоже без ошибок, неважно, где фокус, на поле ввода или ещё где. А вот со скайпом косяк. Так же, если щёлкнуть на самой среде hiAsm, но не на этой форме - тоже лажа, дублирует. Просто хочу убедиться, что ты действительно проверил свою версию, потому что у меня всё по-прежнему.
карма: 1

0
Ответов: 1379
Рейтинг: 86
#4: 2011-03-06 00:17:00 ЛС | профиль | цитата
Я проверял на Qip'e
Действительно, в скайпе наблюдается такой косяк.
карма: 0

0
Ответов: 1376
Рейтинг: 198
#5: 2011-03-06 00:22:30 ЛС | профиль | цитата
callhorse, проверь с такой схемой

Add(MainForm,3795722,476,189)
{
Point(Handle)
link(onCreate,2116081:doPopup,[(520,209)(520,230)(464,230)(464,251)])
}
Add(IntegerArray,14834060,539,231)
{
IntArray=['0'=0,'0'=0,'0'=0]
}
Add(ArrayRW,6157105,539,301)
{
Index=Integer(0)
link(Array,14933405:Var2,[])
link(Index,14480482:Count,[(552,293)(456,293)(456,350)(475,350)])
link(Value,7787639:Value,[(559,285)(297,285)(297,356)(363,356)])
}
Add(KeyHook,13674941,308,308)
{
link(onKeyDown,7787639:doValue,[])
}
Add(Counter,14480482,469,308)
{
Max=2
Default=2
link(onNext,1858601:doEvent1,[])
}
Add(StringTableMT,15612645,693,350)
{
Top=65
Width=330
Height=155
Columns=#3:Key|5:Index|
IconsCheck=[]
MiscIcons=[]
Icons=[]
}
Add(ArrayEnum,11745314,588,350)
{
link(onItem,8995803:doString,[])
link(Array,14933405:Var3,[(594,278)])
}
Add(GetDataEx,14933405,539,273)
{
link(Data,14834060:Array,[])
}
Add(Hub,9045320,539,343)
{
link(onEvent1,15612645:doClear,[(561,349)(561,363)])
link(onEvent2,11745314:doEnum,[])
}
Add(FormatStr,8995803,644,350)
{
Mask="%1;%2"
link(onFString,15612645:doAdd,[])
link(Str1,11745314:Item,[(650,333)(623,333)(623,400)(594,400)])
link(Str2,11745314:Index,[(657,338)(629,338)(629,394)(601,394)])
}
Add(Hub,1858601,511,308)
{
link(onEvent1,6157105:doWrite,[])
link(onEvent2,9045320:doEvent1,[(529,321)(529,349)])
}
Add(WinTools,2116081,476,238)
{
link(Handle,3795722:Handle,[])
}
Add(Memory,7787639,357,308)
{
link(onData,9662867:doTimer,[])
}
Add(Timer,9662867,413,308)
{
Interval=10
Enable=1
AutoStop=1
OverCall=1
link(onTimer,14480482:doNext,[])
}
карма: 1

0
Ответов: 34
Рейтинг: 0
#6: 2011-03-06 13:08:00 ЛС | профиль | цитата
foksov, работает, а в таймере Defer для чего? Я поменял на Ignore и ничего не заметил. Так же интервал сократил до 1, тоже не портится. Если есть разница, пожалуйста, объясни. Вообще таймер в таких случаях использовать - это нормально? Или просто выход из положения?
И спасибо!
карма: 1

0
Ответов: 1946
Рейтинг: 176
#7: 2011-03-06 19:52:34 ЛС | профиль | цитата
Насколько мне известно из практики, компонент KeyHook срабатывает дважды, когда запущено два приложения, использующих файл hook.dll (например, сделать две проги на hiasm с использованием keyhook и запустить - одна не будет реагировать на него, вторая будлет клонировать нажатия).
карма: 10
0
Ответов: 274
Рейтинг: 47
#8: 2011-03-06 21:15:48 ЛС | профиль | цитата
3042, У меня обычно при запуске двух программ использующих hook.dll клавиатура перестает реагировать на нажатия клавиш
карма: 0

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