2013-02-26 3 views
4

Проблемы: Вызов клавиши клавиатуры, чтобы быть нажата, из куска кода С # но вот загвоздка: при нажатии клавиши не должны быть ограничена процессом/приложение но получили от всей операционной системы, так Кроме того, когда программа находится в фоновом режиме и другая форма/программа имеет фокусКак вызвать клавиатуру нажатием программно?

Цель: сделать программу, которая блокирует состояние CapsLock и NumLock

фон: У меня есть ноутбук, и эти 2 ключа расстроить меня много, я хочу, чтобы сделать приложение, которое работает в фоновом режиме, и что отключает CapsLock как только он получает случайно включен, и для NumLock, чтобы никогда не быть отключенным, также, я хочу расширить свои знания о кодировании, я попытался найти решения, но ни одна из них не решает (целую) проблему.

ответ

1
using System; 
using System.Runtime.InteropServices; 

public class CapsLockControl 
{ 

    public const byte VK_NUMLOCK = 0x90; 
    public const byte VK_CAPSLOCK = 0x14; 

    [DllImport("user32.dll")] 
     static extern void keybd_event(byte bVk, byte bScan, uint dwFlags,UIntPtr dwExtraInfo); 
    const int KEYEVENTF_EXTENDEDKEY = 0x1; 
    const int KEYEVENTF_KEYUP = 0x2; 

    public static void Main() 
    { 
     if (Control.IsKeyLocked(Keys.CapsLock)) 
     { 
      Console.WriteLine("Caps Lock key is ON. We'll turn it off"); 
      keybd_event(CapsLockControl.VK_CAPSLOCK, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr) 0); 
      keybd_event(CapsLockControl.VK_CAPSLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 
       (UIntPtr) 0); 
     } 
     else 
     { 
      Console.WriteLine("Caps Lock key is OFF"); 
     } 
    } 
} 
0

Вам придется подключить клавиатуру с помощью user32.dll. Это Codeproject sample должен получить вы начали

0

Если вы хотите отключить CapsLock от фактически нажатия на все, что вы можете сделать это с

SetWindowsHookEx 

Существует много информации здесь о том, как использовать его. Например

Global Hook Keylogger problem

Global keyboard hook that doesn't disable user input outside of form

и конечно MSDN

http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990%28v=vs.85%29.aspx

0

Вы можете попробовать проект CodePlex, который имитирует как клавиатура и мышь щелкает.

Вызванное для Windows Input Simulator и его можно найти Here

Смежные вопросы