Skip to main content
 首页 » 编程设计

C#主动检测锁键

2024年02月13日34pander-it

我有一个无线键盘和鼠标,没有任何锁定指示器,也没有捆绑任何软件来提供视觉辅助,所以我自己制作。

我明白了,如果我点击一个 notifyIcon,它会列出打开了哪些锁,但我想通过在锁被激活时提醒我来让它变得更智能。

我在网上找到了一些东西,但老实说我只想要锁定键,我不关心任何其他键盘按键。

我正在使用 C# .NET 4,但如果该版本有一些东西,我也可以使用 .NET 4.5。

谢谢。

请您参考如下方法:

您需要注册某种键盘钩子(Hook)来监听按键,然后检索锁定键的状态,如下所示:
http://blogs.msdn.com/b/toub/archive/2006/05/03/589423.aspx

除上述文章外,进行以下修改以捕获锁键的状态:

private static IntPtr HookCallback( 
    int nCode, IntPtr wParam, IntPtr lParam) 
{ 
    if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN) 
    { 
        int vkCode = Marshal.ReadInt32(lParam); 
        Keys key = (Keys)vkCode; 
        if (key == Keys.Capital) 
        { 
            Console.WriteLine("Caps Lock: " + !Control.IsKeyLocked(Keys.CapsLock));  
        } 
        if (key == Keys.NumLock) 
        { 
            Console.WriteLine("NumLock: " + !Control.IsKeyLocked(Keys.NumLock)); 
        } 
        if (key == Keys.Scroll) 
        { 
            Console.WriteLine("Scroll Lock: " + !Control.IsKeyLocked(Keys.Scroll)); 
        } 
        Console.WriteLine((Keys)vkCode); 
    } 
    return CallNextHookEx(_hookID, nCode, wParam, lParam); 
}