Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > проверка нажатия клавиши


Автор: maxutov 21.12.2007, 15:22
Здравствуйте, как проверить нажата ли в данный момент 
например клавиша enter
спасибо

Автор: QryStaL 21.12.2007, 15:29
У класса Control есть 3 события: KeyDown, KeyPress и KeyUp

Соответственно, добавляешь обработчики на эти события и реализуешь логику, которая тебе нужна...

Автор: maxutov 21.12.2007, 15:40
Цитата(QryStaL @ 21.12.2007,  15:29)
У класса Control есть 3 события: KeyDown, KeyPress и KeyUp

Соответственно, добавляешь обработчики на эти события и реализуешь логику, которая тебе нужна...

а если приложение консольное?

Автор: QryStaL 21.12.2007, 16:01
Код

        public static void Main()
        {
            while (true)
            {
                ConsoleKeyInfo cki = Console.ReadKey(true);
                if (cki.Key != ConsoleKey.Backspace)
                {
                    Console.WriteLine(cki.KeyChar);
                }
            }
        }

Автор: maxutov 21.12.2007, 16:08
точно спасибо

Автор: Dblma 9.3.2008, 15:43
А вот если ситуация такая:
При запуске приложения (запускается без формы и консоли) надо проверять нажата ли клавиша (например, CTRL). Можно ли это как-нибудь узнать? ( на System.Windows.Forms даже референс не указан).
Заранее спасибо.

Автор: QryStaL 9.3.2008, 17:42
запускается без формы и консоли

это как?

Автор: zaver 10.3.2008, 22:37
Цитата(QryStaL @ 9.3.2008,  17:42)
запускается без формы и консоли

это как?

довольно просто-это значит без консоли и без формыsmile)).
например можно написать такое приложение:
Код

        public static void Main(string[] args)
        {
            
        }

с параметрами компиляции оконного приложения и получишь такое приложение.
можно добавить бесконечный цикл и приложение будет висеть в памяти и например что-то делать.

Если надо делать перехват любой клавиши (называется global hook), то можно воспользоваться этим классом (смотри прикреплено), он позволяет перехватывать все! и блокировать (кроме Ctrl+Alt+Del). Для использования в WPF приложениях надо отключить фукнцию VS process hosting.

Автор: Dblma 11.3.2008, 09:50
Спасибо огромное - гляну!

Добавлено через 8 минут и 45 секунд
Цитата(zaver @ 10.3.2008,  22:37)
Если надо делать перехват любой клавиши (называется global hook), то можно воспользоваться этим классом (смотри прикреплено), он позволяет перехватывать все! и блокировать (кроме Ctrl+Alt+Del). Для использования в WPF приложениях надо отключить фукнцию VS process hosting.

А в прикрепленном файле только скомпилированный проект. А исходников класса хука нету, случаем? 
Заранее спасибо.

Автор: zaver 13.3.2008, 13:35
вот тебе

Автор: Dblma 13.3.2008, 15:39
Цитата(zaver @ 13.3.2008,  13:35)
вот тебе

Спасибо огромное, будем изучать.

Автор: nettitan 15.3.2008, 11:34
Работает, проверенно !!!  smile 

Автор: Sin9ikat 18.3.2008, 20:54
А вот такую вещь не поскажите? Вот короче по одной книжке собрал программу, которая показывает какую букву я нажал на клавиатуре или какое сочетание, например Sift+A (прикреплена програмка). Но показывает она только латинские буквы. А мне нужно, чтобы она показывала код цифровой нажатой кнопки. Например я нажимаю букву G, а програмка пишет 47. и еще нужно чтоб она так же сочетания обробатывала. Например А0+59 (Left SHIFT + Y). 

Автор: FreeParrot 15.12.2008, 17:32
Здраствуйте, у меня такая проблема:
В Windows Forms встроен WPF контрол . мне необходимо отслеживать, нажата ли клавиша shift, когда фокус находится у элементов wpf контрола. Помогите пожалуйста, как это отследить ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)