Отловить нажатие клавиши в консоли - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Необходимо отловить нажатие клавиши пробел или Enter, когда я не нахожусь в консоли, то есть она свернута. Подскажите, как это можно сделать? (нашел некоторые отрывки, но может кто поможет привести эти отрывки в систему)

Решение задачи: «Отловить нажатие клавиши в консоли»

textual
Листинг программы
  1. using System;
  2. using System.Threading;
  3.  
  4. static class KeyPress
  5. {
  6.     [System.Runtime.InteropServices.DllImport( "user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, ExactSpelling = true )]
  7.     public static extern short GetAsyncKeyState( int vkey );
  8.  
  9.     public enum Key { Enter, Space };
  10.     public delegate void keyPress( Key Key );
  11.     public static event keyPress OnKeyPressed;
  12.     static Thread th = new Thread( x =>
  13.     {
  14.         while ( true )
  15.         {
  16.             if ( OnKeyPressed != null )
  17.             {
  18.                 if ( GetAsyncKeyState( 0x0D ) != 0 )
  19.                     OnKeyPressed( Key.Enter );
  20.  
  21.                 if ( GetAsyncKeyState( 0x20 ) != 0 )
  22.                     OnKeyPressed( Key.Space );
  23.             }
  24.  
  25.             Thread.Sleep( 100 );
  26.         }
  27.     } );
  28.  
  29.     public static void Start()
  30.     {
  31.         th.Start();
  32.     }
  33.  
  34.     public static void Stop()
  35.     {
  36.         th.Abort();
  37.     }
  38. }
  39.  
  40. class Program
  41. {
  42.     static void Main( string[] args )
  43.     {
  44.         KeyPress.OnKeyPressed += KeyPress_OnKeyPress;
  45.         KeyPress.Start();
  46.  
  47.         while ( true )
  48.         {
  49.         }
  50.     }
  51.  
  52.     static void KeyPress_OnKeyPress( KeyPress.Key Key )
  53.     {
  54.         if ( Key == KeyPress.Key.Enter )
  55.             Console.Write( "Enter" );
  56.         if ( Key == KeyPress.Key.Space )
  57.             Console.Write( "Space" );
  58.     }
  59. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут