Существует ли родной метод .NET или эквивалент GetkeyboardSath User32.dll?

StackOverflow https://stackoverflow.com/questions/3176804

Вопрос

ОТВЕЧАТЬ: Для этого метода не существенно управлялось эквивалентом. Тем не менее, хороший пример управляемого кода API можно найти в pinvoke.net.net..

Всем привет

У меня есть приложение, которое принимает флаг для «режима трассировки». Режим трассировки включает форму, содержащую текстовое поле. Текстовое поле отображает вывод через пользовательский объект Tracelistener. Если на командной строке есть A -T, в командной строке окно трассировки будет открыто из-за собственной нити с низким приоритетом. Это удобно для консультантов, которые пытаются диагностировать приложение, когда что-то пойдет не так.

Несколько консультантов запросили, что нажатие некоторого непонятной комбинации ключей во время запуска должна включать режим трассировки, поэтому им не нужно переходить в командную строку, чтобы активировать ее каждый раз. Это разумный запрос.

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

Я думал, что это должно было быть достаточно простым, чтобы обнаружить текущее состояние клавиатуры в .NET - но кажется, что везде я выгляжу, совет должен использовать [DLLIMPORT («user32.dll», instractpoint = "GetKeyboardstate", setlasterror = true) ] как метод обнаружения того, что происходит.

Это все хорошо и хорошо - мне удобно. Однако, как общее правило, я пытаюсь убедиться, что я использую NORY .NET Управляемый код для функций Windows, прежде чем идти, пытаясь катиться своим собственным.

Существует ли родной метод .NET или эквивалент GetkeyboardSath User32.dll?

Это было полезно?

Решение

Control.ModiferKeys это статическое свойство Control Что, если таковые имеются, клавиши модификатора в данный момент нажаты. Я не знаю ничего, чтобы получить общее состояние клавиатуры, похоже на большинство кода P / вызывать либо GetKeyboardState или GetKeyState Для проверки определенных клавиш.

Другие советы

Вы уверены, что PreviewkeyDowneventargs не имеет того, что вам нужно? Если это так, то вы можете использовать событие предыдущего проявления.

Другой вариант может быть клавиши ускорителя. Функция API Windows может использовать таблицу акселератора в ресурсах приложения для отображения последовательностей клавиатуры к командам, где команда - это то же самое, что делает элемент меню; Вы знаете, сообщение WM_Command. Я знаю, что это легко сделать в MFC, используя C ++, но когда я пытался найти способ C #, чтобы сделать это, я потерялся. Если вы можете понять, как сделать клавиши ускорителя, используя C #, то это может быть гибким решением.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top