已经用全局钩子拦截下来了,但不知道怎样映射,也不知道C#行还是不行,是不是只有很底层的软件才可以.
若可以的话,能否给点提示?

解决方案 »

  1.   

    此功能用WIN API实现,C#/C++/VB等语言都支持的。C#使用DllImportAttribute来修饰API。
      

  2.   

    to 2楼:就是按b键,结果出a的功能
    to 3楼:能个例子不?全局键盘钩子会用了,但怎样修改呢?
      

  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,映射到其他键去
      

  4.   

    比如你把A键映射到D键
    截获A键的时候,给系统发送一个D键的消息就行了
      

  5.   

    拦截之后可以调用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
            );