PostMessage函数发送中文字符乱码
本帖最后由 Toring 于 2017-4-16 15:43 编辑今天使用PostMessage函数向指定窗口发送字符信息,发现中文字符乱码,英文字符没有问题,怎么解决?
已解决,答案见11楼 本帖最后由 qaz003 于 2017-4-16 15:33 编辑
Toring 发表于 2017-4-16 15:24
记事本也是这个问题,并且我认为PostMessage是向目标窗口发送信息,并没有向输入法发送信息,它与keybd_e ...
“并且我认为PostMessage是向目标窗口发送信息,并没有向输入法发送信息”
哥,你这么说吓到我了。。。口气要坚决些,铁定的事实不是认为不认为的问题
好多年前曾经试过玩一个E文游戏,估计是自绘的聊天框,打开中文输入法状态下Post的话就跟你一样问题,关掉输入法屁事没有。。(当时为了一边追着砍人一边后台喷人家,所以玩了一下这个) WCHAR str[] = L"这是一句话,Hello PostMessage!";
for (int i = 0; i<lstrlen(str); i++)
{
//WM_CHAR 不打开输入法
::PostMessage(hWnd, WM_CHAR, str, 0);
}
这个问题已解决,注意需要用Unicode类型字符,并且第二参数用WM_CHAR不要用WM_IME_CHAR,这样发送就不会乱码了。看雪上看到一个老帖说是WM_CHAR是不开启输入法直接发送,WM_IME_CHAR是开启输入法输入。 表示不懂PostMessage 你可以用域名邮箱 (搜狐邮箱也不错哦) 或者 其他平台的语音发送 楼主说的是易语言吧 应该是编码的问题 有没试试不用post 用 send看看是不是也乱码? qaz003 发表于 2017-4-15 23:53
有没试试不用post 用 send看看是不是也乱码?
send也乱码 dice1412 发表于 2017-4-15 23:52
楼主说的是易语言吧 应该是编码的问题
不是,C语言。Windows API函数啊 Toring 发表于 2017-4-16 10:31
send也乱码
目标是游戏还是普通的程序?或者在目标程序焦点下打开中文输入法或关闭输入法之后再试。。
有没有试试记事本能不能正常?? qaz003 发表于 2017-4-16 15:13
目标是游戏还是普通的程序?或者在目标程序焦点下打开中文输入法或关闭输入法之后再试。。
有没有试试 ...
记事本也是这个问题,并且我认为PostMessage是向目标窗口发送信息,并没有向输入法发送信息,它与keybd_event不同,所以这跟输入法无关,估计是发送消息格式的问题,但是我不知道怎么改 qaz003 发表于 2017-4-16 15:31
“并且我认为PostMessage是向目标窗口发送信息,并没有向输入法发送信息”
哥,你这么说吓到我了。。。 ...
这个问题我找到怎么回事了,我下边统一回复下,谢谢解答
页:
[1]
2