Здравствуйте 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);
}
}