|
Нестандартные "горячие" клавишы
|
|||
---|---|---|---|
#18+
Доброго времени суток! Появилась необходимость реализовать в приложении использование горячих клавиш. Если с системными клавишами все понято (IMessageFilter, RegisterGlobalHotKey) то как быть если нужно отловить например клавишу A+1 (буква "A" + цифра "1"). Когда-то реализовывал похожий функционал на c++ с использованием таймера. Теперь вот думаю, нет ли в c# какого нибудь метода "поизящнее" что-ли, чтобы реализовать подобное? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2015, 16:20 |
|
Нестандартные "горячие" клавишы
|
|||
---|---|---|---|
#18+
Я б при нажатии A запускал б Stopwatch, при нажатии 1 проверял б, сколько на нём натикало. Не очень точный способ, впрочем, но среди стандартных .Net классов всё ж самый точный. Не рекомендую ни в коем случае DateTime.Now - в нём плюс минус лапоть. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2015, 16:33 |
|
Нестандартные "горячие" клавишы
|
|||
---|---|---|---|
#18+
micolossЕсли с системными клавишами все понято (IMessageFilter, RegisterGlobalHotKey) Ничего Вам не понятно в C# ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2015, 16:50 |
|
Нестандартные "горячие" клавишы
|
|||
---|---|---|---|
#18+
Cat2, Поясните пожалуйста... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2015, 16:53 |
|
Нестандартные "горячие" клавишы
|
|||
---|---|---|---|
#18+
Ilya81 Не рекомендую ни в коем случае DateTime.Now - в нём плюс минус лапоть. Не лапоть, а квант времени. 15 или 10 милисекунд. Я делал чтото похожее, буфер на KeyPress - и складывал туда введенные символы. когда накапливалось то, что мне надо распознавать - проверял и делал соответственную обработку. В вашем случае надо проверять, что уже 2 клавиши были нажаты. Если это командная комбинация - выполняем команду и стираем буфер. Причем с символьными клавишами я бы сказал, что в любом случае будет плохо. А если кто-то быстро наберет А1? Нет идеального решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2015, 10:27 |
|
Нестандартные "горячие" клавишы
|
|||
---|---|---|---|
#18+
D129Ilya81 Не рекомендую ни в коем случае DateTime.Now - в нём плюс минус лапоть. Не лапоть, а квант времени. 15 или 10 милисекунд. Там погрешности бывают чуть ли не в минуты, сам проверял. Т. е. может оказаться, что DateTime.Now выдал одно значение, а спустя 5 секунд - уже на полминуты больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2015, 10:36 |
|
Нестандартные "горячие" клавишы
|
|||
---|---|---|---|
#18+
Ilya81Т. е. может оказаться, что DateTime.Now выдал одно значение, а спустя 5 секунд - уже на полминуты больше. А что, легко... Служба NTP откорректировала время на компьютере. А DateTime.Now выдает локальное время. Ilya81но среди стандартных .Net классов всё ж самый точный Только в том случае, если в чипсет встроены HPET - таймер с высокой точностью. В противном случае точность такая же - +- 15,6мс ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2015, 11:43 |
|
Нестандартные "горячие" клавишы
|
|||
---|---|---|---|
#18+
Arm79Ilya81Т. е. может оказаться, что DateTime.Now выдал одно значение, а спустя 5 секунд - уже на полминуты больше. А что, легко... Служба NTP откорректировала время на компьютере. А DateTime.Now выдает локальное время. Ilya81но среди стандартных .Net классов всё ж самый точный Только в том случае, если в чипсет встроены HPET - таймер с высокой точностью. В противном случае точность такая же - +- 15,6мс Вероятно, так и было, я тогда в причинах не разобрался. Но Stopwatch свободен именно от этих дефектов, а если важны миллисекунды, то тут стандартных средств .Net не хватит. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2015, 11:48 |
|
Нестандартные "горячие" клавишы
|
|||
---|---|---|---|
#18+
Ilya81Но Stopwatch свободен именно от этих дефектов Нет. Цитата из MSDN: Экземпляр Stopwatch измеряет затраченное время с помощью подсчета тактов таймера на нижнем уровне временного механизма. Если установленное оборудование и операционная система поддерживают счетчики производительности высокого разрешения, то класс Stopwatch использует этот счетчик для измерения затраченного времени. В противном случае класс Stopwatch использует системный таймер для измерения ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2015, 12:00 |
|
Нестандартные "горячие" клавишы
|
|||
---|---|---|---|
#18+
Ilya81а если важны миллисекунды, Ну и для очистки совести: последние известные мне числовые показатели точности HPET - это погрешность в 500нс. То есть миллисекунды будут с высокой точностью считаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2015, 12:02 |
|
|
start [/forum/topic.php?fid=20&msg=38864058&tid=1401978]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 144ms |
0 / 0 |