Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нестандартные "горячие" клавишы / 11 сообщений из 11, страница 1 из 1
26.01.2015, 16:20
    #38863438
micoloss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартные "горячие" клавишы
Доброго времени суток!
Появилась необходимость реализовать в приложении использование горячих клавиш. Если с системными клавишами все понято (IMessageFilter, RegisterGlobalHotKey) то как быть если нужно отловить например клавишу A+1 (буква "A" + цифра "1"). Когда-то реализовывал похожий функционал на c++ с использованием таймера. Теперь вот думаю, нет ли в c# какого нибудь метода "поизящнее" что-ли, чтобы реализовать подобное?
Спасибо!
...
Рейтинг: 0 / 0
26.01.2015, 16:33
    #38863460
Ilya81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартные "горячие" клавишы
Я б при нажатии A запускал б Stopwatch, при нажатии 1 проверял б, сколько на нём натикало. Не очень точный способ, впрочем, но среди стандартных .Net классов всё ж самый точный. Не рекомендую ни в коем случае DateTime.Now - в нём плюс минус лапоть.
...
Рейтинг: 0 / 0
26.01.2015, 16:50
    #38863485
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартные "горячие" клавишы
micolossЕсли с системными клавишами все понято (IMessageFilter, RegisterGlobalHotKey)
Ничего Вам не понятно в C#
...
Рейтинг: 0 / 0
26.01.2015, 16:53
    #38863486
micoloss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартные "горячие" клавишы
Cat2,
Поясните пожалуйста...
...
Рейтинг: 0 / 0
27.01.2015, 10:27
    #38863982
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартные "горячие" клавишы
Ilya81 Не рекомендую ни в коем случае DateTime.Now - в нём плюс минус лапоть.
Не лапоть, а квант времени. 15 или 10 милисекунд.

Я делал чтото похожее, буфер на KeyPress - и складывал туда введенные символы.
когда накапливалось то, что мне надо распознавать - проверял и делал соответственную обработку.
В вашем случае надо проверять, что уже 2 клавиши были нажаты. Если это командная комбинация - выполняем команду и стираем буфер.

Причем с символьными клавишами я бы сказал, что в любом случае будет плохо. А если кто-то быстро наберет А1? Нет идеального решения.
...
Рейтинг: 0 / 0
27.01.2015, 10:36
    #38863991
Ilya81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартные "горячие" клавишы
D129Ilya81 Не рекомендую ни в коем случае DateTime.Now - в нём плюс минус лапоть.
Не лапоть, а квант времени. 15 или 10 милисекунд.
Там погрешности бывают чуть ли не в минуты, сам проверял. Т. е. может оказаться, что DateTime.Now выдал одно значение, а спустя 5 секунд - уже на полминуты больше.
...
Рейтинг: 0 / 0
27.01.2015, 11:43
    #38864058
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартные "горячие" клавишы
Ilya81Т. е. может оказаться, что DateTime.Now выдал одно значение, а спустя 5 секунд - уже на полминуты больше.
А что, легко... Служба NTP откорректировала время на компьютере. А DateTime.Now выдает локальное время.


Ilya81но среди стандартных .Net классов всё ж самый точный
Только в том случае, если в чипсет встроены HPET - таймер с высокой точностью. В противном случае точность такая же - +- 15,6мс
...
Рейтинг: 0 / 0
27.01.2015, 11:48
    #38864062
Ilya81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартные "горячие" клавишы
Arm79Ilya81Т. е. может оказаться, что DateTime.Now выдал одно значение, а спустя 5 секунд - уже на полминуты больше.
А что, легко... Служба NTP откорректировала время на компьютере. А DateTime.Now выдает локальное время.


Ilya81но среди стандартных .Net классов всё ж самый точный
Только в том случае, если в чипсет встроены HPET - таймер с высокой точностью. В противном случае точность такая же - +- 15,6мс
Вероятно, так и было, я тогда в причинах не разобрался. Но Stopwatch свободен именно от этих дефектов, а если важны миллисекунды, то тут стандартных средств .Net не хватит.
...
Рейтинг: 0 / 0
27.01.2015, 12:00
    #38864072
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартные "горячие" клавишы
Ilya81Но Stopwatch свободен именно от этих дефектов
Нет. Цитата из MSDN:
Экземпляр Stopwatch измеряет затраченное время с помощью подсчета тактов таймера на нижнем уровне временного механизма. Если установленное оборудование и операционная система поддерживают счетчики производительности высокого разрешения, то класс Stopwatch использует этот счетчик для измерения затраченного времени. В противном случае класс Stopwatch использует системный таймер для измерения
...
Рейтинг: 0 / 0
27.01.2015, 12:02
    #38864073
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартные "горячие" клавишы
Ilya81а если важны миллисекунды,
Ну и для очистки совести: последние известные мне числовые показатели точности HPET - это погрешность в 500нс. То есть миллисекунды будут с высокой точностью считаться.
...
Рейтинг: 0 / 0
27.01.2015, 12:20
    #38864098
Ilya81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартные "горячие" клавишы
Это понятно при условии, что заказчика устраивает вариант соответствующих системных требований. Я про случай, если такие системные требования неприемлемы.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нестандартные "горячие" клавишы / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]