如何编写.vxd文件,用那种工具最好,屏蔽键盘和F4,F5,F8如何做,
请给一段代码,谢谢!
[email protected]

解决方案 »

  1.   

    可以去这里看一看,有完整的解决方案,绝对实用:
    http://www.aslike.net
      

  2.   

    //键盘钩子函数
    LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
    {
    if(nCode == HC_ACTION)
    {
    switch(wParam)
    {
    case WM_KEYDOWN:
    case WM_KEYUP:
    case WM_SYSKEYDOWN:
    case WM_SYSKEYUP:
    PKBDLLHOOKSTRUCT pHook = (PKBDLLHOOKSTRUCT)lParam;
    for(UINT i = 0; i < 17; i++)
    {
    switch(uHookKeyType & (DWORD)pow(2, i))
    {
    case KEY_ESC:
    if((pHook->vkCode == VK_ESCAPE) && 
    (!(::GetKeyState(VK_CONTROL) & 0x8000)))
    {
    if(pMainWnd && !bFlagEsc)
    {
    if(CWnd::GetActiveWindow() == pMainWnd)
    {
    return 1;
    }
    }
    else
    {
    return 1;
    }
    }
    break;
    case KEY_ALTESC:
    if((pHook->vkCode == VK_ESCAPE) && (pHook->flags & LLKHF_ALTDOWN))
    {
    return 1;
    }
    break;
    case KEY_ALTTAB:
    if((pHook->vkCode == VK_TAB) && (pHook->flags & LLKHF_ALTDOWN))
    {

    return 1;
    }
    break;
    case KEY_CTRLESC:
    if((pHook->vkCode == VK_ESCAPE) && 
    (::GetKeyState(VK_CONTROL) & 0x8000))
    {
    return 1;
    }
    break;
    case KEY_LWIN:
    if(pHook->vkCode == VK_LWIN)
    {
    return 1;
    }
    break;
    case KEY_RWIN:
    if(pHook->vkCode == VK_RWIN)
    {
    return 1;
    }
    break;
    case KEY_TAB:
    if(pHook->vkCode == VK_TAB)
    {
    return 1;
    }
    break;
    case KEY_APPS:
    if(pHook->vkCode == VK_APPS)
    {
    if(pMainWnd && !bFlagApps)
    {
    if(CWnd::GetActiveWindow() == pMainWnd)
    {
    if(wParam == WM_KEYUP)
    {
    if((iMenuPos > -1) || (pShortMenu))
    {
    //消除菜单渐出现象
    ::Sleep(250);
    //隐性地调用Bonus.dll的CWndOP::ShortMenu
    //显示快捷菜单
    CWndOP *pWndOP = (CWndOP*)pMainWnd;
    pWndOP->ShortMenu(iMenuPos, pShortMenu);
    }
    else
    {
    return 1;
    }
    }
    else
    {
    return 1;
    }
    }
    }
    else
    {
    return 1;
    }
    }
    break;
    case KEY_PRINT:
    if(pHook->vkCode == VK_PRINT)
    {
    return 1;
    }
    break;
    case KEY_SNAPSHOT:
    if(pHook->vkCode == VK_SNAPSHOT)
    {
    return 1;
    }
    break;
    case KEY_PAUSE:
    if(pHook->vkCode == VK_PAUSE)
    {
    return 1;
    }
    break;
    case KEY_ALL:
    return 1;
    break;
    case KEY_ALTF4:
    if((pHook->vkCode == VK_F4) && (pHook->flags == LLKHF_ALTDOWN))
    {
    return 1;
    }
    break;
    }
    }
    break;
    }
    } return ::CallNextHookEx(hhKey, nCode, wParam, lParam);
    }
      

  3.   

    写.VXD的问题,最好到“硬件/系统”版块问一下