Xelloss0618 发表于 2023-12-31 17:02 我先在用了DrawTextA和DrawTextExW、ExtTextOutW三个函数进行操作的 界面基本都能替换成中文但是有一个缺点就是当所显示的控件或者表格不完整的时候输出内容也是不完整的这样对语言库里面就不能查找到翻译,但是这个程序输出到界面的内容是从另一个服务程序里面进程通讯接收过来的内容 服务程序里面进行MultiByteToWideChar转换的所以想在服务程序里面拦截这个函数直接在源头解决问题。 |
muye84 发表于 2023-12-31 18:26 我的 PIV模块,可以扣 |
Xelloss0618 发表于 2023-12-31 16:42 大佬,这个简易hook类是啥模块里带的啊?能单独扣出来不得? |
wxt5210 发表于 2023-12-31 16:53 英文软件一般也不需要调用 MultiByteToWideChar 吧…… 另外也可以试试 SetWindowText,在界面上显示文本,一般用调用这个 API,直接替换掉它的文本即可 |
Xelloss0618 发表于 2023-12-31 16:42 多谢大师解惑 这样是能获取到转换后的文本 我实际目的是想在转换之前把lpMultiByteStr指针里面的英文内容替换为中文达到汉化的目的 如果按照这个逻辑我是不是就要直接修改lpWideCharStr指针的内容 但是翻译后的数据长度和原长度又不一样了 |
一、lpMultiByteStr 用「指针到文本」,由于文本编码不同,自然不能转换到文本; 二、用「多字节指针到文本」处理 lpMultiByteStr,编码一样,但「多字节指针到文本」本身就会调用 MultiByteToWideChar,这就形成递归命令(命令不断调用自身),直接崩了; 所以只能用字节集获取lpMultiByteStr,或者在执行原函数后,获取转换后的Unicode文本。 |
urenai 发表于 2023-12-31 15:36 我试过 用多字节指针到文本程序直接就崩了 |
编码不同。 火山这边可以使用 : 多字节指针到文本() |
|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )
GMT+8, 2024-11-24 01:22 , Processed in 0.089656 second(s), 22 queries .
Powered by Discuz! X3.4
© 2001-2017 Comsenz Inc.