Отловить нажатие клавиши в консоли - C#
Формулировка задачи:
Здравствуйте!
Необходимо отловить нажатие клавиши пробел или Enter, когда я не нахожусь в консоли, то есть она свернута. Подскажите, как это можно сделать? (нашел некоторые отрывки, но может кто поможет привести эти отрывки в систему)
Решение задачи: «Отловить нажатие клавиши в консоли»
textual
Листинг программы
- using System;
- using System.Threading;
- static class KeyPress
- {
- [System.Runtime.InteropServices.DllImport( "user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, ExactSpelling = true )]
- public static extern short GetAsyncKeyState( int vkey );
- public enum Key { Enter, Space };
- public delegate void keyPress( Key Key );
- public static event keyPress OnKeyPressed;
- static Thread th = new Thread( x =>
- {
- while ( true )
- {
- if ( OnKeyPressed != null )
- {
- if ( GetAsyncKeyState( 0x0D ) != 0 )
- OnKeyPressed( Key.Enter );
- if ( GetAsyncKeyState( 0x20 ) != 0 )
- OnKeyPressed( Key.Space );
- }
- Thread.Sleep( 100 );
- }
- } );
- public static void Start()
- {
- th.Start();
- }
- public static void Stop()
- {
- th.Abort();
- }
- }
- class Program
- {
- static void Main( string[] args )
- {
- KeyPress.OnKeyPressed += KeyPress_OnKeyPress;
- KeyPress.Start();
- while ( true )
- {
- }
- }
- static void KeyPress_OnKeyPress( KeyPress.Key Key )
- {
- if ( Key == KeyPress.Key.Enter )
- Console.Write( "Enter" );
- if ( Key == KeyPress.Key.Space )
- Console.Write( "Space" );
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д