类似中文输入法,要把指定的中文发送到其他窗口中,比如记事本,用SendInput似乎只能模拟英文?

解决方案 »

  1.   

    不好意思,应该是WM_CHAR消息。
      

  2.   

    用SendMessage发消息的方法不太好吧,因为必须先获取要发送到的窗口的句柄,比较麻烦。
      

  3.   

    WM_IME_CHAR 
    ::SendMessage(hwnd,   WM_IME_CHAR,   '中',   0);
    hwnd为可输入的窗口句柄,结果是输入了一个"中"字。   
    keybd_event也可以,但比较麻烦http://topic.csdn.net/t/20030826/12/2188458.html
      

  4.   

    不麻烦, 
    HWND hNotepad = FindWindow(_T("Notepad"), NULL);
    POINT pt; 
    pt.x = pt.y = 20;
    HWND hEdit = ChildWindowFromPoint(hNotepad, pt);
    然后用hEdit去sendmessage就行了.
    还可以枚举, 办法挺多的.
      

  5.   

    keybd_event就好了,不用去管焦点窗口时哪个
      

  6.   

    如果是unicode程序,那么你使用wm_char发送中文和英文是一致的。
      

  7.   

    //如果是非unicode工程,可以如此操作
    t = *( str + i );
    e = *( str + i + 1 ); if( ( unsigned char )t >= 0xa0 && ( unsigned char )e >= 0xa0 )
    {
    WPARAM a;
    a = ( unsigned char )e;
    a <<= 8;
    a += ( unsigned char )t;
    // 汉字
    ::SendMessage( hwnd, WM_CHAR, ( WPARAM )a, 0x00000001 );
    i++;
    }
    else
    {
    ::SendMessage( hwnd, WM_CHAR, ( WPARAM )( t ), 0x001f0001 );
    }
    //这是俺的程序的一部分,只是简单判断了一下中文,具体使用时要注意。