Toring 发表于 2017-4-15 21:43

PostMessage函数发送中文字符乱码

本帖最后由 Toring 于 2017-4-16 15:43 编辑

今天使用PostMessage函数向指定窗口发送字符信息,发现中文字符乱码,英文字符没有问题,怎么解决?

已解决,答案见11楼

qaz003 发表于 2017-4-16 15:31

本帖最后由 qaz003 于 2017-4-16 15:33 编辑

Toring 发表于 2017-4-16 15:24
记事本也是这个问题,并且我认为PostMessage是向目标窗口发送信息,并没有向输入法发送信息,它与keybd_e ...
“并且我认为PostMessage是向目标窗口发送信息,并没有向输入法发送信息”
哥,你这么说吓到我了。。。口气要坚决些,铁定的事实不是认为不认为的问题

好多年前曾经试过玩一个E文游戏,估计是自绘的聊天框,打开中文输入法状态下Post的话就跟你一样问题,关掉输入法屁事没有。。(当时为了一边追着砍人一边后台喷人家,所以玩了一下这个)

Toring 发表于 2017-4-16 15:41

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是开启输入法输入。

PHS 发表于 2017-4-15 22:46

表示不懂PostMessage   你可以用域名邮箱 (搜狐邮箱也不错哦) 或者 其他平台的语音发送   

dice1412 发表于 2017-4-15 23:52

楼主说的是易语言吧 应该是编码的问题

qaz003 发表于 2017-4-15 23:53

有没试试不用post 用 send看看是不是也乱码?

Toring 发表于 2017-4-16 10:31

qaz003 发表于 2017-4-15 23:53
有没试试不用post 用 send看看是不是也乱码?

send也乱码

Toring 发表于 2017-4-16 10:32

dice1412 发表于 2017-4-15 23:52
楼主说的是易语言吧 应该是编码的问题

不是,C语言。Windows API函数啊

qaz003 发表于 2017-4-16 15:13

Toring 发表于 2017-4-16 10:31
send也乱码

目标是游戏还是普通的程序?或者在目标程序焦点下打开中文输入法或关闭输入法之后再试。。

有没有试试记事本能不能正常??

Toring 发表于 2017-4-16 15:24

qaz003 发表于 2017-4-16 15:13
目标是游戏还是普通的程序?或者在目标程序焦点下打开中文输入法或关闭输入法之后再试。。

有没有试试 ...

记事本也是这个问题,并且我认为PostMessage是向目标窗口发送信息,并没有向输入法发送信息,它与keybd_event不同,所以这跟输入法无关,估计是发送消息格式的问题,但是我不知道怎么改

Toring 发表于 2017-4-16 15:37

qaz003 发表于 2017-4-16 15:31
“并且我认为PostMessage是向目标窗口发送信息,并没有向输入法发送信息”
哥,你这么说吓到我了。。。 ...

这个问题我找到怎么回事了,我下边统一回复下,谢谢解答
页: [1] 2
查看完整版本: PostMessage函数发送中文字符乱码