首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Postmessage 发送中文字符到另一程序窗口出乱码.该如何解决

2012-03-30 
Postmessage 发送中文字符到另一程序窗口出乱码.菜鸟第一帖,弱弱的问一个问题://自定义过程.procedure Sen

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变量释放空间而无法获得了!

热点排行