Данный пример реализует последовательное загорание и затухание индикаторов NumLock, CapsLock, ScrollLock на клавиатуре. Также его можно использовать для реализации управления включения и отключения режимов NumLock, CapsLock, ScrollLock.Создайте проект Windows Form в Microsoft Visual Studio. Добавьте компонент Timer на вашу главную форму. Перейдите в свойства компонента и выставьте следующие параметры:
Enabled: True
Interval: 1000
Для работы проекта вам понадобится подключить пространство имен:
using System.Runtime.InteropServices; using System.Threading;
Сделайте двойной клик по компоненту Timer и перейдите в автоматически созданный метод timer1_Tick, добавьте в него следующий листинг:
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);
Теперь переходим к основному коду, добавьте следующий листинг в код главной формы:
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;
}
Запустите ваш проект, нажав на клавиатуре клавишу «F5» и посмотрите на индикаторы. Вы так же можете пользоваться этими функциями по отдельности:
SetNumLockKey(true);
или выключить!
SetNumLockKey(false);
Ссылки для скачивания: Rusfolder.net — DepositFiles — Turbobit.net — Letitbit.net
0.00 (0%) 0 votes











