C#怎样做键盘映射? 已经用全局钩子拦截下来了,但不知道怎样映射,也不知道C#行还是不行,是不是只有很底层的软件才可以.若可以的话,能否给点提示? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此功能用WIN API实现,C#/C++/VB等语言都支持的。C#使用DllImportAttribute来修饰API。 to 2楼:就是按b键,结果出a的功能to 3楼:能个例子不?全局键盘钩子会用了,但怎样修改呢? 些楼上,C#写驱动,很困难吧.这个放弃.我已经拦截到键盘信息,但不会修改,我把代码贴上,你帮修改下protected override int HookCallbackProcedure(int nCode, int wParam, IntPtr lParam) { if (nCode > -1 && (KeyDown != null || KeyUp != null || KeyPress != null)) { KeyboardHookStruct keyboardHookStruct = (KeyboardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyboardHookStruct)); if (keyboardHookStruct.vkCode == (short )Keys.A)//如果按了a键 { //处理部分,这里不会写 return 1;//拦截 } return CallNextHookEx(_handleToHook, nCode, wParam, lParam);//不拦截 } }这段代码是是钩子拦截后的的处理部分,请帮修改一下,将按键a,映射到其他键去 比如你把A键映射到D键截获A键的时候,给系统发送一个D键的消息就行了 拦截之后可以调用keybd_event这个API,很easy比如模拟Ctrl+Skeybd_event(17, 0, 0, 0); keybd_event(83, 0, 0, 0);keybd_event(83, 0, 0x2, 0);keybd_event(17, 0, 0x2, 0);这样把这个函数弄进来 [DllImport("user32.dll", EntryPoint = "keybd_event")] public static extern void keybd_event( byte bVk, byte bScan, int dwFlags, //这里是整数类型 0 为按下,2为释放 int dwExtraInfo //这里是整数类型 一般情况下设成为 0 ); C#窗体跳转 有没有SQL数据库高帮我远程协助下 看看VS里这个数据库为什么连不上 快递单号批量输出软件 100分求基于C/S的三层架构的思路和C#代码 关于DataAdapter填充非框架数据集DataSet suplistview控件 怎么把sql表包括其中的字段导入Access 高手请进,图片加水印问题,急!!!!!!!!!!!!!!!! 高手急救:所有的文件全都报错了。。。线等,即结 VS2017安装 求一个储存过程 如何实现 任意键复制粘贴?
to 3楼:能个例子不?全局键盘钩子会用了,但怎样修改呢?
{
if (nCode > -1 && (KeyDown != null || KeyUp != null || KeyPress != null))
{
KeyboardHookStruct keyboardHookStruct =
(KeyboardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyboardHookStruct));
if (keyboardHookStruct.vkCode == (short )Keys.A)//如果按了a键
{
//处理部分,这里不会写
return 1;//拦截
} return CallNextHookEx(_handleToHook, nCode, wParam, lParam);//不拦截
}
}
这段代码是是钩子拦截后的的处理部分,请帮修改一下,将按键a,映射到其他键去
截获A键的时候,给系统发送一个D键的消息就行了
keybd_event(83, 0, 0, 0);
keybd_event(83, 0, 0x2, 0);
keybd_event(17, 0, 0x2, 0);这样把这个函数弄进来 [DllImport("user32.dll", EntryPoint = "keybd_event")]
public static extern void keybd_event(
byte bVk,
byte bScan,
int dwFlags, //这里是整数类型 0 为按下,2为释放
int dwExtraInfo //这里是整数类型 一般情况下设成为 0
);