我有一个C#控制台应用程序,其中包含代表按钮的一些文本,例如,它看起来像这样的[ D ][ E ][ F ][ G ]
当用户按下按钮时,我希望按钮被突出显示,这没有问题,因为我当前正在做的是重写具有Console.BackgroundColor设置的按钮。
我想要做的是在按住键的同时将它们的键不断加亮,但是一旦再次提起键,就将要删除的加亮,如果可能的话,我也希望同时按下多个键。这是我不知道该怎么办?
希望有道理:)
有什么帮助吗?
谢谢
最佳答案
如果愿意添加对Windows.Forms的引用,请调用Application.Run()来运行消息队列,并调用外部Windows DLL,则可以使用以下代码进行操作:http://blogs.msdn.com/b/toub/archive/2006/05/03/589423.aspx
该页面将向您展示如何挂接低级键盘按下事件。
要也挂钩键盘事件,您需要添加一个WM_KEYUP常量:
private const int WM_KEYDOWN = 0x0100;
private const int WM_KEYUP = 0x0101;
然后修改
HookCallback
方法: private static IntPtr HookCallback(
int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
{
int vkCode = Marshal.ReadInt32(lParam);
Console.WriteLine("Down:" + (Keys)vkCode);
}
else if (nCode >= 0 && wParam == (IntPtr)WM_KEYUP)
{
int vkCode = Marshal.ReadInt32(lParam);
Console.WriteLine("Up:" + (Keys)vkCode);
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
每次按键都会给您“向上”和“向下”消息。从那里,您应该能够将其合并到您的应用程序中。
祝好运!