Re: Caps/Num/Scroll Lock индикаторы
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 25.03.02 06:19
Оценка:
Здравствуйте Alexander, Вы писали:

A>Привет.

A>Подскажите как програмно "зажечь"/"потушить" сабж. Я в МСДН нашел пример, но он почему-то не совсем так, как надо работает (я его немного переписал: в оригинале — для НумЛока, но там упоминалось что-то об особенностях его переключения под Вин98):

A>
A>#include <windows.h>

A>void SetCapsLock( BOOL bState ) {
A>    BYTE keyState[256];
A>    GetKeyboardState((LPBYTE)&keyState);
A>    if((bState && !(keyState[VK_CAPITAL] & 1)) || (!bState && (keyState[VK_CAPITAL] & 1))) {
A>        // Simulate a key press
A>        keybd_event( VK_CAPITAL, 0x3a, KEYEVENTF_EXTENDEDKEY | 0, 0 );
A>        // Simulate a key release
A>        keybd_event( VK_CAPITAL, 0x3a, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
A>    }
A>    GetKeyboardState((LPBYTE)&keyState);
A>}

A>void main() {
A>    SetCapsLock( TRUE );
A>}
A>


а если так:

void SetCapsLock(BOOL bState)
{
    BYTE keyState[256];
    
    GetKeyboardState((LPBYTE)&keyState);
    if ((bState && !(keyState[VK_CAPITAL] & 1)) ||
        (!bState && (keyState[VK_CAPITAL] & 1)))
    {
        // Simulate a key press
        keybd_event(VK_CAPITAL, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0);
        
        // Simulate a key release
        keybd_event(VK_CAPITAL, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
    }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.