键盘挂钩重复字符 [英] keyboard hook repeating charactor
本文介绍了键盘挂钩重复字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
HHHHHHHHHHHHHHHHHHHHHEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEELLEELLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
有人可以帮我吗?
我正在使用Windows Server 2008 R2 64位标准版以及vs 2005 Professional.
LRESULT __declspec(dllexport)__stdcall CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { ofstream fout; fout.open("c:\\viv.txt",ios::app); static BOOL flag = FALSE ; static BYTE key ; if ( nCode < 0 ) return CallNextHookEx ( hkb, nCode, wParam, lParam ) ; if ( ( nCode == HC_ACTION ) && ( (((DWORD)lParam & 0x80000000) == 0 ) && (((DWORD)lParam & 0x40000000 ) == 0 ) )) { if ((wParam==VK_SPACE)||(wParam==VK_RETURN)||((wParam>=0x2f ) &&(wParam<=0x100))) { if(wParam != VK_RETURN) { key = (BYTE)wParam; fout<<key; } } } fout.close(); return CallNextHookEx(hkb, nCode, wParam, lParam); }
解决方案
您必须使用KeyUp或KeyDown来记录密钥.在VB.Net中检查此示例
http://sim0n.wordpress.com/2009/03/28/vbnet-keyboard -hook-class/ [ ^ ]
不起作用,以任何方式感谢您的答复
switch(wParam) { case WM_KEYDOWN: keystat = 1; break; case WM_KEYUP: if(keystat == 1) { keystat = 2; key = (BYTE)wParam; fout<<key; } break; default: if(keystat == 2) { keystat = 0; key = (BYTE)wParam; fout<<key; } }
hi all . i am trying to implement keyboard hook ,it works however it repeats entered char for eg. if i enter hello it gives
HHHHHHHHHHHHHHHHHHHHHEEEEEEEEEEEEEEEEEEEEELLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLOOOOOOOOOOOOOOOOOOOOO
can any one help me here ?
i am using windows server 2008 r2 64 bit standard edition , with vs 2005 professional.
LRESULT __declspec(dllexport)__stdcall CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { ofstream fout; fout.open("c:\\viv.txt",ios::app); static BOOL flag = FALSE ; static BYTE key ; if ( nCode < 0 ) return CallNextHookEx ( hkb, nCode, wParam, lParam ) ; if ( ( nCode == HC_ACTION ) && ( (((DWORD)lParam & 0x80000000) == 0 ) && (((DWORD)lParam & 0x40000000 ) == 0 ) )) { if ((wParam==VK_SPACE)||(wParam==VK_RETURN)||((wParam>=0x2f ) &&(wParam<=0x100))) { if(wParam != VK_RETURN) { key = (BYTE)wParam; fout<<key; } } } fout.close(); return CallNextHookEx(hkb, nCode, wParam, lParam); }
解决方案
You must use KeyUp or KeyDown to log the keys. Check this sample in VB.Net
http://sim0n.wordpress.com/2009/03/28/vbnet-keyboard-hook-class/[^]
did not work , any way thanks for reply
switch(wParam) { case WM_KEYDOWN: keystat = 1; break; case WM_KEYUP: if(keystat == 1) { keystat = 2; key = (BYTE)wParam; fout<<key; } break; default: if(keystat == 2) { keystat = 0; key = (BYTE)wParam; fout<<key; } }
这篇关于键盘挂钩重复字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文