如何利用HOOK,截获中文输入

vcdll 2002-05-08 11:19:21
我截获WM_CHAR消息
可是最终是乱码
...全文
155 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
uaiia 2002-05-17
  • 打赏
  • 举报
回复
钩消息没有太大的用处,因为很多输入法在输入汉字时并不是都能触发WM_IMECHAR消息,有些输入法通过直接向INPUTCONTEXT结构写入汉字来达到
输出汉字的。
你可以通过钩子将你的代码注入所有进程,枚举每个进程装载的DLL,在DLL名称是*.ime的dll里将ImeToAsciiEx修改,
函数原型入下:
UINT WINAPI ImeToAsciiEx (UINT uVKey,UINT uScanCode,CONST LPBYTE lpbKeyState,LPDWORD lpdwTransKey,UINT fuState,HIMC hIMC)
其返回值是输入的汉字数,指针lpdwTransKey指向汉字消息串,通过修改
ImeToAsciiEx,你可以截获输入法输出的汉字
NowCan 2002-05-17
  • 打赏
  • 举报
回复
现在的问题根本不是怎么做钩子,而是现在就没有这个消息。
zdhe 2002-05-12
  • 打赏
  • 举报
回复
如果要处理的不是你自己的PROCESS, HOOK一定要用. 你不能处理WORD的IME MESSAGE.
首先需要用setwindowshookex把你的代码投入到要处理的PROCESS中去,然后可以直接处理WM_CHAR, 如果你要处理IME输入过程本身, 才需要WM_IMECHAR.


NowCan 2002-05-11
  • 打赏
  • 举报
回复
这个消息有时无效,比如在word里面就没有这个消息。
NowCan 2002-05-11
  • 打赏
  • 举报
回复
这个消息有时无效,比如在word里面就没有这个消息。
111222 2002-05-10
  • 打赏
  • 举报
回复
http://www.csdn.net/Expert/TopicView.asp?id=150776&datebasetype=200101
111222 2002-05-10
  • 打赏
  • 举报
回复
http://www.csdn.net/Expert/TopicView.asp?id=149372&datebasetype=200101
Xsean 2002-05-10
  • 打赏
  • 举报
回复
是啊,没有必要用HOOK,在MSDN里输入IMM,有很多函数和消息的
zhuwenzheng 2002-05-08
  • 打赏
  • 举报
回复
use WM_IMECHAR
kingzai 2002-05-08
  • 打赏
  • 举报
回复
WM_IMECHAR可以截获到
papaya_stone 2002-05-08
  • 打赏
  • 举报
回复
我也想知道如何截获这个字符!

WM_IME_CHAR
The WM_IME_CHAR message is sent to an application when the IME gets a character of the conversion result. Unlike theWM_CHAR message, this message can include double-byte as well as single-byte character values.

// for double-byte characters:
chCharCode1 = (char) wParam & 0xff;
chCharCode2 = (char) wParam >> 8;
// for Unicode:
chCharCode1 = (WORD) wParam;
lKeyData = lParam;

Parameters
chCharCode1 and chCharCode2
(For double-byte character sets) Single- or double-byte character value. For a double-byte character, chCharCode1 contains the lead byte.
chCharCode1
(For Unicode) Unicode character value.
lKeyData
Repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown following: Bit Meaning
0 - 15 Repeat count: Since the first byte and second byte is continuous, this is always 1.
16 - 23 Scan Code: Scan code for a complete FE character.
24 - 28 Not used.
29 Context code.
31 Conversion state.


Remarks
If the WM_IME_CHAR message includes a double-byte character and the application passes this message to DefWindowProc, the IME converts this message into two WM_CHAR messages, each containing one byte of the double-byte character.

QuickInfo
Windows NT: Requires version 4.0 or later.
Windows: Requires Windows 95 or later.
Windows CE: Unsupported.
Header: Declared in imm.h.

See Also
Input Method Editor Overview, Input Method Editor Messages,DefWindowProc,WM_CHAR

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧