ANSWER: Для этого метода нет эквивалентного управления. Однако хороший пример управляемого кода API можно найти по адресу pinvoke.net.Есть ли собственный метод .NET или эквивалент GetKeyboardState для пользователя user32.dll?
Привет всем
У меня есть приложение, которое принимает флаг для «режима трассировки». Режим трассировки включает форму, содержащую текстовое поле. Текстовое поле выводит результат через собственный объект TraceListener. Если в командной строке присутствует -t, окно трассировки будет открыто из собственного потока с низким приоритетом. Это удобно для консультантов, которые пытаются диагностировать приложение, когда что-то пойдет не так.
Несколько консультантов потребовали, чтобы нажатие некоторой скрытой комбинации клавиш во время запуска включало режим трассировки, поэтому им не нужно идти в командную строку, чтобы активировать его каждый раз. Это разумный запрос.
Я не хочу давать им кнопку или пункт меню для этого, потому что большая часть важной информации, о которой будут заботиться консультанты, отображается в Trace при запуске до того, как будет создана основная форма, когда будут созданы экземпляры различных компонентов и инициализируется.
Я думал, что это должно было быть достаточно простым, чтобы обнаружить текущее состояние клавиатуры в .NET. Но кажется, что везде, где я смотрю, советуем использовать [DllImport («user32.dll», EntryPoint = «GetKeyboardState», SetLastError = true)] как метод для определения того, что происходит.
Это все хорошо и хорошо - мне это удобно. Однако, как правило, я пытаюсь убедиться, что я использую собственный управляемый код .NET для функций Windows, прежде чем я попытаюсь опрокинуть свой собственный.
Есть ли собственный метод .NET или эквивалент GetKeyboardState для user32.dll?
Спасибо Донни. Control.ModifierKeys предоставит мне клавиши control/shift/alt, но не любую буквенную клавишу, которая может быть нажата или не нажата. Я думаю, вы правы в том, что нужно p/вызвать GetKeyboardState или GetKeyState. Подтверждает мои подозрения - спасибо. –