LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam,LPARAM lParam)
{
    HWND  hstance;
hstance=GetActiveWindow();
if( code == HC_ACTION )
{
switch (wParam)
{
case 'Y':
wParam = 90;
//我想按键Y ,在记事本或者其他应用程序接受的事
//Z键,我用SendMessage  和 CallNextHookEx 都不能实现,还请各位指明
//谢 谢!!!
/SendMessage(0,WM_KEYDOWN,wParam,lParam);
//SendMessage(0,WM_KEYUP,wParam,lParam);
                           // return 1; return CallNextHookEx(hHook,code,wParam,lParam);
return 1;
break;
}
}
    return CallNextHookEx(hHook,code,wParam,lParam);
}

解决方案 »

  1.   

    try the following:switch(wParam)
    {
       case 0x59:
           wParam=0x5a;
    ....
           break;
    }
      

  2.   

    LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam,LPARAM lParam)
    {
        HWND  hstance;
    hstance=GetActiveWindow();
    if( code == HC_ACTION )
    {
    switch (wParam)
    {
      case 0x59:
                           wParam=0x5a;
                           break;
    }
    }
        return CallNextHookEx(hHook,code,wParam,lParam);}To zhuwenzheng(卧薪尝胆) 
    是这么改吗?我是过来,按'y'出来的还是'y'
    我想实现想按键精灵一样的效果,谢谢!!
      

  3.   

    好像只有WH_GETMESSAGE钩子中可以改变消息的参数,别的钩子中不行
    你可以在WH_GETMESSAGE中截获WM_KEYDOWN或WM_CHAR消息,然后改变
      

  4.   

    to Ah(蓝过天) 
    你是指在KeyboardProc(int code, WPARAM wParam,LPARAM lParam)
    用keyboard_event() ,我也曾试过,不过没有能够成功
      

  5.   

    全局钩子的回调函数要放在Dll中的,你是的吗?
      

  6.   

    我是写的全局的键盘钩子阿,WH_KEYBOARD 钩子,
    我试过 microsoftwin(流星雨点) 的方法,改用WH_GETMESSAGE
    钩子,确实可以进行修改键值,不知道有WH_KEYBOARD钩子有没有实现的方法
    我即使在WH_KEYBOARD钩子不修改wParam的值,我用发送消息模拟不行吗?不知道是什么
    原因系统没有反应SendMessage(0,WM_KEYDOWN,wParam,lParam);
           SendMessage(0,WM_KEYUP,wParam,lParam);