如题:如果是非nunicode窗口,如何向窗口发送中文。下面代码有些问题。请各位大侠帮忙。。
if(!IsWindowUnicode(hwnd))
{
  for(int i=0; i <len; i+=2)
  {
SendMessageA(hwnd, WM_IME_CHAR, szBuf[i]+szBuf[i+1]*256,1);
  }
 }

解决方案 »

  1.   

    发送程序是UNICODE的话,WideCharToMultiByte转成ANSI了再发
    发送程序是ANSI的话,直接发就可以了
    发送直接用SendMessage就行了,系统有个WM_COPYDATA消息,具体用法搜下就出来了.
      

  2.   


    “发送程序”?我是把发送的方法放在动态连接库当中。你的意思是说我的DLL程序本身是Unicode的吗?我使用的是vs2008,默认的应该是unicode吧。WM_COPYDATA不是一个copy到内存公共区域的方法吗?为什么不可以用WM_IME_CHAR 哪?
      

  3.   

    用WM_COPYDATA就好了,这个就是微软设计来做进程间小数据传输用的,WM_IME_CHAR没用过,不太清楚.
    和动态链接库没有关系,你发送的是UNICODE字符的话,接收方也必须按UNICODE字符来接收处理,反之同理.
      

  4.   

    不关心你什么字符串,只要你知道发送的是ANSI还是UNICODE格式,然后接收的字符串,对应的转换回中文就可以了
      

  5.   


    再请教最后一个问题,如果接受窗口是第三方程序。例如说是游戏窗口。那我是否需要拦截它的底层消息来处理WM_COPYDATA。从而达到解析中文的目的。