当在Word中输入“你好” 记录下来的结果变成了"你好你好你好你好" 实在不解。。 代码如下
case WM_IME_COMPOSITION:
//MessageBox(NULL, "ImmGetContext3", "ImmGetContext3", MB_OK);
//if (m_hEditWnd == pmsg->hwnd)
{
HIMC hIMC;
HWND hWnd=pmsg->hwnd;
DWORD dwSize;
//char ch;
if(pmsg->lParam & GCS_RESULTSTR)
{
//先获取当前正在输入的窗口的输入法句柄
hIMC = ImmGetContext(hWnd);
if (!hIMC)
{
MessageBox(NULL, "ImmGetContext", "ImmGetContext", MB_OK);
}
// 先将ImmGetCompositionString的获取长度设为0来获取字符串大小.
dwSize = ImmGetCompositionString(hIMC, GCS_RESULTSTR, NULL, 0);
// 缓冲区大小要加上字符串的NULL结束符大小,
// 考虑到UNICODE

在使用HOOK技术监听WM_IME_COMPOSITION消息时,发现在Word中输入中文如'你好',会被记录多次,实际输出变为'你好你好你好你好'。代码中尝试通过ImmGetContext和ImmGetCompositionString获取并处理输入的汉字,但遇到了问题。解决方法可能涉及检查消息处理逻辑或输入法状态管理。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



