读取键盘输入而不总是关注我的控制台应用程序?

Read keyboard inputs without always having my console application focused?

是否可以在不始终关注我的控制台应用程序的情况下读取键盘输入? 我想用一个按钮做一些事情而不总是去控制台。

这难道不能以某种方式处理事件吗?不幸的是,我只找到了难看的 Forms 解决方案。

@Siarhei Kuchuk 的这个解决方案也没有帮助我: Global keyboard capture in C# application

OnKeyPressed 事件已激活但未触发。

有人知道吗?

这是可能的。您可能会 google “键盘记录器”并找到许多示例,但我会给您一个非常粗略的简单示例。 但首先你必须添加对 System.Windows.Forms.dll 的引用才能工作

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Threading;

namespace ConsoleApp1
{
    class Program
    {
        [DllImport("User32.dll")]
        private static extern short GetAsyncKeyState(System.Int32 vKey);
        static void Main(string[] args)
        {
            while (true)
            {
                Thread.Sleep(500);
                for (int i = 0; i < 255; i++)
                {
                    int state = GetAsyncKeyState(i);
                    if (state != 0)
                    {
                        string pressedKey= ((System.Windows.Forms.Keys)i).ToString();
                        switch (pressedKey)
                        {

                            default:
                                Console.WriteLine("You have pressed: " + pressedKey);
                                break;
                        }
                    }
                }
            }
        }
    }
}