如题:如果是非nunicode窗口,如何向窗口发送中文。下面代码有些问题。请各位大侠帮忙。。
if(!IsWindowUnicode(hwnd))
{
for(int i=0; i <len; i+=2)
{
SendMessageA(hwnd, WM_IME_CHAR, szBuf[i]+szBuf[i+1]*256,1);
}
}
if(!IsWindowUnicode(hwnd))
{
for(int i=0; i <len; i+=2)
{
SendMessageA(hwnd, WM_IME_CHAR, szBuf[i]+szBuf[i+1]*256,1);
}
}
发送程序是ANSI的话,直接发就可以了
发送直接用SendMessage就行了,系统有个WM_COPYDATA消息,具体用法搜下就出来了.
“发送程序”?我是把发送的方法放在动态连接库当中。你的意思是说我的DLL程序本身是Unicode的吗?我使用的是vs2008,默认的应该是unicode吧。WM_COPYDATA不是一个copy到内存公共区域的方法吗?为什么不可以用WM_IME_CHAR 哪?
和动态链接库没有关系,你发送的是UNICODE字符的话,接收方也必须按UNICODE字符来接收处理,反之同理.
再请教最后一个问题,如果接受窗口是第三方程序。例如说是游戏窗口。那我是否需要拦截它的底层消息来处理WM_COPYDATA。从而达到解析中文的目的。