VC语言

本类阅读TOP10

·VC++ 学习笔记(二)
·用Visual C++打造IE浏览器(1)
·每个开发人员现在应该下载的十种必备工具
·教你用VC6做QQ对对碰外挂程序
·Netmsg 局域网聊天程序
·Windows消息大全
·VC++下使用ADO编写数据库程序
·VC++学习笔记(四)
·非法探取密码的原理及其防范
·怎样在VC++中访问、修改注册表

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
在Dialog程序中使用WH_KEYBOARD_LL类型HOOK

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

在Dialog程序中使用WH_KEYBOARD_LL类型HOOK的方法:

SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)LowLevelKeyboardProc, AfxGetApp()->m_hInstance, NULL);

LRESULT CALLBACK LowLevelKeyboardProc (INT nCode, WPARAM wParam, LPARAM lParam)
{
    // By returning a non-zero value from the hook procedure, the
    // message does not get passed to the target window

    KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;
    BOOL bControlKeyDown = 0;

    switch (nCode)
    {
        case HC_ACTION:
        {
            // Check to see if the CTRL key is pressed
            bControlKeyDown = GetAsyncKeyState (VK_CONTROL) >> ((sizeof(SHORT) * 8) - 1);
           
            // Disable CTRL+ESC
            if (pkbhs->vkCode == VK_ESCAPE && bControlKeyDown)
                return 1;

            // Disable ALT+TAB
            if (pkbhs->vkCode == VK_TAB && pkbhs->flags & LLKHF_ALTDOWN)
                return 1;

            // Disable ALT+ESC
            if (pkbhs->vkCode == VK_ESCAPE && pkbhs->flags & LLKHF_ALTDOWN)
                return 1;

            // Response to Up
            if ((pkbhs->vkCode == VK_UP) && (WM_KEYUP == wParam))
            {
                    HWND hwnd=::FindWindow(NULL, "WindowCaption");
                    ::PostMessage(hwnd, WM_COMMAND, ID_MENU_ITEM, 0L);
            }
        }
        default:
            break;
    }
    return CallNextHookEx (NULL, nCode, wParam, lParam);
}

BOOL InstallKbHook( )
 {

    if (hhookKb )
        UninstallKbHook();

    hhookKb = SetWindowsHookEx(WH_KEYBOARD_LL,
        (HOOKPROC)LowLevelKeyboardProc, AfxGetApp()->m_hInstance, NULL);

    return(hhookKb != NULL);

}

BOOL UninstallKbHook()
{

    BOOL fOk = FALSE;
    if (hhookKb ) {
        fOk = UnhookWindowsHookEx(hhookKb );
        hhookKb = NULL;
    }

    return(fOk);
}




相关文章

相关软件