捕获击键没有焦点控制台(Capture keystroke without focus in con

2019-06-25 10:18发布

我知道有Windows窗体的一个问题,但它在控制台不工作,或者至少我不能得到它的工作。 我需要捕获的按键,即使不必须重点控制台

Answer 1:

您可以创建一个控制台应用程序的全局键盘钩子,太。

下面是完整的,工作代码:

http://blogs.msdn.com/b/toub/archive/2006/05/03/589423.aspx

您创建一个控制台应用程序 ,但必须在参考System.Windows.Forms的添加对这个工作。 没有理由一个控制台应用程序不能引用的DLL。

我只是用这个代码创建控制台应用程序并验证它得到每次按键,控制台应用程序是否有焦点。

编辑

主线程将运行Application.Run(),直到退出应用程序,例如通过向Application.Exit()的调用。 做其他的工作,最简单的方法是开始一个新的任务来执行这项工作。 下面是从链接代码,做这个的Main()的修改版本

public static void Main()
{
    var doWork = Task.Run(() =>
        {
            for (int i = 0; i < 20; i++)
            {
                Console.WriteLine(i);
                Thread.Sleep(1000);
            }
            Application.Exit(); // Quick exit for demonstration only.  
        });

    _hookID = SetHook(_proc);

    Application.Run();

    UnhookWindowsHookEx(_hookID);
}

注意

可能提供退出时,根据您的具体需要按下一个特殊键组合控制台应用程序如一种手段。 在里面



文章来源: Capture keystroke without focus in console