输入法上的按键也可以Hook到。
或者你Hook窗口消息WM_CHAR、WM_UNICHAR。

解决方案 »

  1.   

    如果字符(包括汉字)会收到WM_CHAR消息或者WM_UNICHAR消息,消息中的wParam参数就是输入的字符,汉字会收到两个WM_CHAR消息或者一个WM_UNICHAR消息。
      

  2.   

    我写了这样的代码出现了下列提示的错误:
    ompiling...
    汉字.cpp
    C:\Program Files\Microsoft Visual Studio\MyProjects\汉字\汉字.cpp(78) : error C2065: 'WM_UNICHAR' : undeclared identifier
    C:\Program Files\Microsoft Visual Studio\MyProjects\汉字\汉字.cpp(78) : error C2051: case expression not constant
    C:\Program Files\Microsoft Visual Studio\MyProjects\汉字\汉字.cpp(82) : warning C4060: switch statement contains no 'case' or 'default' labels
    Error executing cl.exe.汉字.dll - 2 error(s), 1 warning(s)DllExport void WINAPI InstallLaunchEv() 

    Hook=(HHOOK)SetWindowsHookEx(WH_GETMESSAGE, 
    (HOOKPROC)LauncherHook, 
    theApp.m_hInstance, 
    0); 
    }
    LRESULT CALLBACK LauncherHook(int   nCode,WPARAM   wParam,LPARAM   lParam)   
      {   
    LRESULT Result=CallNextHookEx(Hook,nCode,wParam,lParam); 
     不知道怎么修改??
          MSG*pmsg= (MSG*)lParam;   
               switch(pmsg->message)   
       {   
       case  WM_UNICHAR:
         Hanzi+=wParam;
          break;
       
       }  
    return Result;
      }   
      

  3.   

    LRESULT CALLBACK LauncherHook(int   nCode,WPARAM   wParam,LPARAM   lParam)   
      {   
    int a;
    LRESULT Result=CallNextHookEx(Hook,nCode,wParam,lParam); 
       a = 1;
    return Result;
      }   你可以先这样写,然后调试,进到这个函数里边后,看看wParam和lParam都是什么东西,再看看你键盘实际上打得是什么字,再看看参数跟字之间什么关系,搞明白了,你就知道里边怎么处理了
      

  4.   

    如果字符(包括汉字)会收到WM_CHAR消息或者WM_UNICHAR消息,消息中的wParam参数就是输入的字符,汉字会收到两个WM_CHAR消息或者一个WM_UNICHAR消息。
    -------------
    汉字占2个字节,按照这个说法,估计你接受2次wParam后,就能组成一个汉字