C#怎么检测用户在控制台按下了某键?
答案:2 悬赏:10 手机版
解决时间 2021-11-20 08:24
- 提问者网友:山高云阔
- 2021-11-20 04:18
C#怎么检测用户在控制台按下了某键?
最佳答案
- 五星知识达人网友:北方的南先生
- 2021-11-20 04:29
static void Main(String[] args)
{
while (true)
{
ConsoleKeyInfo info = Console.ReadKey();
switch (info.Key)
{
case ConsoleKey.UpArrow:
case ConsoleKey.W:
Console.WriteLine("Up");
break;
case ConsoleKey.DownArrow:
case ConsoleKey.S:
Console.WriteLine("Down");
break;
case ConsoleKey.LeftArrow:
case ConsoleKey.D:
Console.WriteLine("Left");
break;
case ConsoleKey.RightArrow:
case ConsoleKey.A:
Console.WriteLine("Right");
break;
default:
Console.WriteLine(info.Key);
break;
}
}
}
{
while (true)
{
ConsoleKeyInfo info = Console.ReadKey();
switch (info.Key)
{
case ConsoleKey.UpArrow:
case ConsoleKey.W:
Console.WriteLine("Up");
break;
case ConsoleKey.DownArrow:
case ConsoleKey.S:
Console.WriteLine("Down");
break;
case ConsoleKey.LeftArrow:
case ConsoleKey.D:
Console.WriteLine("Left");
break;
case ConsoleKey.RightArrow:
case ConsoleKey.A:
Console.WriteLine("Right");
break;
default:
Console.WriteLine(info.Key);
break;
}
}
}
全部回答
- 1楼网友:时间的尘埃
- 2021-11-20 05:31
你可以创建一个winform不显示,捕获keydown事件。
也可以用下面这个方法:
必须使用Windows api,用键盘钩子函数截取键盘按键记录,然后把这个EXE程序注册为系统服务就能自动运行了,C#中键盘钩子的使用
public class Win32Hook
{
[DllImport("kernel32")]
public static extern int GetCurrentThreadId();
[DllImport( "user32",
CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
public static extern int SetWindowsHookEx(
HookType idHook,
HOOKPROC lpfn,
int hmod,
int dwThreadId);
public enum HookType
{
WH_KEYBOARD = 2
}
public delegate int HOOKPROC(int nCode, int wParam, int lParam);
public void SetHook()
{
// set the keyboard hook
SetWindowsHookEx(HookType.WH_KEYBOARD,
new HOOKPROC(this.MyKeyboardProc),
0,
GetCurrentThreadId());
}
public int MyKeyboardProc(int nCode, int wParam, int lParam)
{
//在这里放置你的处理代码 return 0;
}
}
使用方法
可以在Form的构造函数里放入
Win32Hook hook = new Win32Hook();
hook.SetHook();追问 看不懂,我只是个新手。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯