重阳 ChongyangLee

_____关注可编程技术______

导航

控制键盘上的三个状态灯

Posted on 2008-07-29 23:26  ChongyangLee  阅读(649)  评论(0编辑  收藏  举报

      昨天同事要求控制键盘上的三个灯,也就是Caps Lock、Num Lock和Scroll Lock的状态,使用下面的函数就可以了。
void SetLockLight(WORD wVk, bool bLight)
{
    short ks = ::GetKeyState(wVk);
    if((!bLight && (ks & 0x01)) 
        || (bLight && !(ks & 0x01)))
    {
        INPUT input[2];
        memset(input, 0, sizeof(input));
        input[0].type = input[1].type = INPUT_KEYBOARD;
        input[0].ki.wVk = input[1].ki.wVk = wVk;
        input[0].ki.dwFlags = KEYEVENTF_EXTENDEDKEY;
        input[1].ki.dwFlags = KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP;
        ::SendInput(sizeof(input) / sizeof(input[0]), input, sizeof(INPUT));
        MSG msg;
        while(::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
            ::TranslateMessage(&msg);
            ::DispatchMessage(&msg);
        }
    }
}