Сегодня 31 мая, пятница ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7273
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Справочник по C#
Справочник по C#
Голосов: 1
Адрес блога: http://www.csharpcoderr.com/
Добавлен: 2012-11-28 00:46:26
 

Балуемся индикаторами NumLock, CapsLock, ScrollLock на клавиатуре!

2012-10-23 12:55:33 (читать в оригинале)


Данный пример реализует последовательное загорание и затухание индикаторов NumLock, CapsLock, ScrollLock на клавиатуре. Также его можно использовать для реализации управления включения и отключения режимов NumLock, CapsLock, ScrollLock.


Для работы нам понадобится подключить пространство имен:

using System.Runtime.InteropServices;
using System.Threading;
И добавить компонент таймер со свойствами:
Enabled: True
Interval: 1000

Теперь переходим к коду:

private const byte VK_SCROLL = 0x91;
private const byte VK_NUMLOCK = 0x90;
private const byte VK_CAPITAL = 0x14;
private const uint KEYEVENTF_KEYUP = 0x2;


[DllImport("user32.dll", EntryPoint = "keybd_event", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);

[DllImport("user32.dll", EntryPoint = "GetKeyState", SetLastError = true)]
static extern short GetKeyState(uint nVirtKey);
//Scroll-------------------------------------------------------
public static void SetScrollLockKey(bool newState)
{
    bool scrollLockSet = GetKeyState(VK_SCROLL) != 0;
    if (scrollLockSet != newState)
    {
        keybd_event(VK_SCROLL, 0, 0, 0);
        keybd_event(VK_SCROLL, 0, KEYEVENTF_KEYUP, 0);
    }
}
public static bool GetScrollLockState()
{
    return GetKeyState(VK_SCROLL) != 0;
}
//NUM------------------------------------------------------- 
public static void SetNumLockKey(bool newState)
{
    bool scrollLockSet = GetKeyState(VK_NUMLOCK) != 0;
    if (scrollLockSet != newState)
    {
        keybd_event(VK_NUMLOCK, 0, 0, 0);
        keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0);
    }
}

public static bool GetNumLockState()
{
    return GetKeyState(VK_NUMLOCK) != 0;
}
//Caps-------------------------------------------------------
public static void SetCapsLockKey(bool newState)
{
    bool scrollLockSet = GetKeyState(VK_NUMLOCK) != 0;
    if (scrollLockSet != newState)
    {
        keybd_event(VK_CAPITAL, 0, 0, 0);
        keybd_event(VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0);
    }
}

public static bool GetCapsLockState()
{
    return GetKeyState(VK_CAPITAL) != 0;
}
Для реализации поочередного включения/выключения в таймер вставляете вот этот код:
SetNumLockKey(true);
Thread.Sleep(100);
SetNumLockKey(false);
Thread.Sleep(100);
SetCapsLockKey(true);
Thread.Sleep(100);
SetCapsLockKey(false);
Thread.Sleep(100);
SetScrollLockKey(true);
Thread.Sleep(100); 
SetScrollLockKey(false);
Thread.Sleep(100); 
Вы так же можете пользоваться этими функциями по отдельности в случае если что-то необходимо включить:
SetNumLockKey(true);
или выключить!
SetNumLockKey(false);

Тэги: animation, form, keyboard, system, window

 


Самый-самый блог
Блогер Рыбалка
Рыбалка
по среднему баллу (5.00) в категории «Спорт»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.