Отловить нажатие клавиши в консоли - 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" );
    }
}

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


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

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

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