首页
社区
课程
招聘
请教:HOOK 之 键盘改键的问题?
发表于: 2011-3-15 14:14 6179

请教:HOOK 之 键盘改键的问题?

2011-3-15 14:14
6179
朋友的电脑出了点问题:两个Shift键都失灵了!于是想把左边的Ctrl改成Shift!即当按下左边的Ctrl时,等效于按了左边的Shift。

本以为会很容易,但试过后发现完全不是那么回事呀!?哪位兄台有经验,帮忙看看!

首先,我没有使用全局钩子,而是针对扫雷程序做了一个“Ctrl”to“F2”的改键操作,我们知道在扫雷窗口按“F2”后,会重新开局,那么如果改键成功,按“Ctrl”也应该会重新开局!

我使用的是 WH_GETMESSAGE 钩子,钩子安装成功,Dll注入成功,但是无论按多少次“Ctrl”都无效果!代码如下:
void SetupGlobalKeyHook()
{
    HWND hWnd = ::FindWindow(NULL,"扫雷");
    DWORD dwThreadId = ::GetWindowThreadProcessId(hWnd,NULL);

    Hook = (HHOOK)SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)Hookey,h_Inst,dwThreadId);

    if (Hook == NULL)
    {
        MessageBox(NULL,"Setup Hook Failed!","Failed",MB_OK);
        return;
    }
}

LRESULT CALLBACK Hookey(int nCode,WPARAM wParam,LPARAM lParam)
{
    if (nCode == HC_ACTION)
    {
        PMSG pMsg = (PMSG)lParam;

        if (pMsg->message == WM_KEYDOWN)
        {
            if((pMsg->wParam == 0x00000011) && (pMsg->lParam == 0x001D0001))
            {
                pMsg->wParam = 0x00000071;
                pMsg->lParam = 0x003C0001;
            }
        MessageBox(NULL,"WM_KEYDOWN!","WM_KEYDOWN",MB_OK);
        //最令我不解的是,我必须加上这个“MessageBox”才能使“Ctrl”转“F2”生效!
        }
    }

    return CallNextHookEx(Hook,nCode,wParam,lParam);
} 


求指教!多谢!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 244
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不需要这么麻烦,直接在注册表改就行了。

将下面的存为reg,导入注册表,然后注销一下就行了。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,2a,00,1d,00,00,00,00,00

2011-3-15 14:23
0
雪    币: 294
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢,我知道这个方法,我不是为了这个功能,只是为了练习技术...
2011-3-15 14:35
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
WH_KEYBOARD_LL
2011-3-15 16:01
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
好东西我也来学习了
2011-3-15 16:03
0
雪    币: 294
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
多谢帅哥,能提供一段源码么?
2011-3-15 16:20
0
雪    币: 12626
活跃值: (3122)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
同意二楼的方法,这是最好的。
2011-3-17 15:45
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
:看这些我就头晕脑胀了  学习中
2011-3-17 21:33
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
拿来学习学习
2011-3-18 13:38
0
游客
登录 | 注册 方可回帖
返回
//