我知道有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