Postmessage 发送中文字符到另一程序窗口出乱码.
菜鸟第一帖,弱弱的问一个问题:
//自定义过程.
procedure SendString(Jhandle:HWND; const str:string);
var
i:integer;
begin
for i:=1 to length(str)do
PostMessage(Jhandle,WM_IME_CHAR,ord(str[i]),0);
end;
//调用自定义过程.
sendstring (Jhandle,'大家好,这是我的处女帖!');
我把上面的字符串发送到一个游戏的文字输入窗口(实现后台喊话):
当游戏文字输入窗口切换成"中文输入"状态时..sendstring 中文字符显示乱码.
当游戏文字输入窗口要换成"英文输入"状态时..sendstring 中文字符显示正常..
请高手指点.谢谢!
[解决办法]
就是搞一个AMsgList:TStringList;
先将消息添加
i:=AMsgList.Add('ABCD');
然后发送
Postmessage(Handle,WM_MyMessage,i,0);
收到消息后显示消息
Showmessage(AMsgList.Strings[msg.WParam]);
[解决办法]
为什么不用SendMessage呢?!PostMessage发送消息,不是即时发送的。
这样就有问题的,因为发送的内容是一个PChar实际上为String里的空间,而String是的空间是自动释放的,所以当目录句柄得到
消息以后,消息的参数所指向的PChar空间已经随着String变量释放空间而无法获得了!