Какой рейтинг вас больше интересует?
|
Главная / Главные темы / Тэг «sustain»
Балуемся индикаторами 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
Блокируем все запущенные приложения кроме своего 2012-10-23 09:41:15
+ развернуть текст сохранённая копия
Данная функция позволяет реализовать блокировку всех запускаемых и запущенных приложений кроме вашего, мне данный код пригодился в реализации родительского контроля!
Для работы нам необходимо подключить следующее пространство имен:
using System.Runtime.InteropServices;
Подключаем функции GetDesktopWindow,GetWindow и EnableWindow из библиотеки user32.dll.
[DllImport("user32.dll", SetLastError = false)]
static extern IntPtr GetDesktopWindow();
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr GetWindow(IntPtr hWnd, GetWindow_Cmd uCmd);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnableWindow(IntPtr hWnd, bool bEnable);
Объявляем необходимы нам флаги для прохода по приложениям
enum GetWindow_Cmd : uint
{
GW_HWNDFIRST = 0,
GW_HWNDLAST = 1,
GW_HWNDNEXT = 2,
GW_HWNDPREV = 3,
GW_OWNER = 4,
GW_CHILD = 5,
GW_ENABLEDPOPUP = 6
}
Ну и сама функция блокировки приложений:
private void button1_Click(object sender, EventArgs e)
{
//получаем первое дочернее окно Рабочего стола
IntPtr hwnd = GetWindow(GetDesktopWindow(), GetWindow_Cmd.GW_CHILD);
if (hwnd != IntPtr.Zero)
{
//перебираем все окна в системе
while (hwnd != IntPtr.Zero)
{
//проверка, что блокируем не свое окно
if (hwnd != this.Handle)
{
//блокируем окно
//(вид окна, как будто его блокирует диалоговое окно)
EnableWindow(hwnd, false);
}
//получаем хендл следующего окна
hwnd = GetWindow(hwnd, GetWindow_Cmd.GW_HWNDNEXT);
}
}
}
Указывая в EnableWindow(hwnd, false) true или false вы блокируете или разблокируете приложения!
Тэги: application, form, process, system, window
Программно выполняем Ctrl+C 2012-10-23 08:51:42
+ развернуть текст сохранённая копия
[DllImport("user32.dll", SetLastError = true)]
private static extern void keybd_event( byte bVk, byte bScan, uint dwFlags, int dwExtraInfo );
private static void SendCtrlhotKey( char key ) {
keybd_event( 0x11, 0, 0, 0);
keybd_event( (byte)key, 0, 0, 0);
keybd_event( (byte)key, 0, 0x2, 0);
keybd_event( 0x11, 0, 0x2, 0);
}
Пример как использовать:
SendCtrlhotKey( 'C' );
Тэги: form, keyboard, system, window
Отслеживаем состояние раскладки клавиатуры 2012-10-19 14:25:12
+ развернуть текст сохранённая копия
Тэги: form, keyboard, system, winapi, window
Серж Танкян обратился к правительству Армении 2012-10-17 17:34:11
Всемирно известный американский рок-музыкант армянского происхождения, солист группы System of a ...
+ развернуть текст сохранённая копия
Всемирно известный американский рок-музыкант армянского происхождения, солист группы System of a Down Серж Танкян, посредством гражданской инициативы “Спасем Тегут” распространил свою статью под названием “Пересмотрим экономику, основанную на горнорудной промышленности”. Ниже представляем вам слово протеста знаменитого музыканта. Серж Танкян. “Экстрадиция в Баку и героизация там приговоренного в Венгрии к пожизненному заключению убийцы еще раз [...]
Тэги: down, system, новость
Главная / Главные темы / Тэг «sustain»
|
|