ChongyangLee

      昨天同事要求控制键盘上的三个灯,也就是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);
        }
    }
}

分类:

技术点:

相关文章: