PDA

Показать полную графическую версию : Отлов набора слова.


ikif
01-07-2014, 12:44
День добрый,
Решил сделать всякие фишки для упрощения работы за компом. Одна из них :
Набор "calc" в любом месте/положении и последующим открытием калькулятора поверх всех окон.
Проблема в отлове набора "calc".
пока реализовал так :

Func WordCatch()
Local $c= _IsPressedEX("c")
Local $a= _IsPressedEX("a")
Local $l= _IsPressedEX("l")
;Local $alfa= _IsPressedEX("[:ALPHA:]")
If $c And $caunt=0 Then
$caunt=1
EndIf
If $a And $caunt=1 Then
$caunt=2
EndIf
If $l And $caunt=2 Then
$caunt=3
EndIf
If $c And $caunt=3 Then
$caunt=0
RunCalc()
EndIf
EndFunc


Но это не спасает от таких вещей как например :"calfdsdfsdfsdc" , поэтому при наборе в Ворде периодически будет открываться калькулятор. С _IsPressedEX("[:ALPHA:]") не получилось отсеивать.
Такое впечатление , что после нажатия буквы , она остается в буффере какое то время и может опять быть опознана как нажатая.

Думаю как переделать эту функцию на универсальную - послал целое слово , вернулось rtue/false.

Заранее благодарен.

madmasles
01-07-2014, 20:55
ikif,
ИМХО, надо задавать таймер и, если заданное время не вышло, составлять строку из нажатых клавиш, если вышло, то обнулять строку, и добавить контрольную клавишу после нажатия которой слово из сохраненной строки сравнивать с заданными эталонами и после этого производить заданные действия.

ikif
02-07-2014, 13:29
Таймер , по моему не очень подходит под человеческий фактор.
А могу напечатать "calc" не спеша , а "cat lick cake" :) быстро.

madmasles
02-07-2014, 17:16
Таймер , по моему не очень подходит под человеческий фактор. »Если Вы нажмете "c", через полчаса "a", а еще через полчаса "lc", забыв уже про первых два нажатия, то Вам вряд ли понравится внезапно открывшийся калькулятор, ИМХО. :)

ikif
02-07-2014, 20:05
Я наверно вас не очень понимаю. У вас есть пример кода ?
И как составить строку из нажатых клавиш , чтобы было возможным распознать то самое слово ?

Я думал организовать это , как продвижение по положениям - нажал "с" - шаг вперед, нажал "а" - еще шаг , .... , нажал "что то другое" обнуление. Но такое впечатление , что _IsPressedEX() выдает несколько раз TRUE на одно лишь нажатие клавиши.

madmasles
02-07-2014, 21:43
ikif,
ИМХО, Вам надо получать нажатые клавиши на основе этого: Примера перехвата вводимых символов с клавиатуры (http://forum.ru-board.com/topic.cgi?forum=5&topic=17705&start=1400#16).

ikif
03-07-2014, 12:01
Спасибо !!!




© OSzone.net 2001-2012