C#编写的软件,如何只用“上”“下”“左”“右”“回车”“esc”控制软件的开始停止切换等动作?

来源:百度知道 编辑:UC知道 时间:2024/06/03 22:55:15
C#编写的软件,如何只用“上”“下”“左”“右”“回车”“esc”控制软件的开始停止切换等动作?

winform的话可以利用keypress吧
如果比较复杂的话,只能利用钩子了

获取键盘按键的ASC码,

ESC键和“回车”的ASCII分别为027、13

“上”“下”“左”“右”键没有ASCII码,只有键盘扫描码
//键盘扫描码,仅功能键使用
private const int KEY_Up = 72; // 上
private const int KEY_Down = 80; // 下
private const int KEY_Left = 75; // 左
private const int KEY_Right = 77; // 右
可以捕获这些按键来做相应的处理。
至于如何捕获:keypress就不解释了,最简单的。
钩子很危险,因为涉及WINDOWS底层,几乎所有杀毒软件都会警告。
钩子使用还是有点麻烦,要先安装,注册方法,用完还要卸载。
[DllImport("user32.dll", CharSet = CharSet.Auto,
CallingConvention = CallingConvention.StdCall, SetLastError = true)]
private static extern int SetWindowsHookEx(
int idHook,
HookProc lpfn,
IntPtr hMod,
int dwThreadId);
public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto,
CallingConvention = CallingConvention.StdCall)]