当前位置:  开发笔记 > 编程语言 > 正文

如何在.net中找到NumLock,CapsLock和ScrollLock的状态?

如何解决《如何在.net中找到NumLock,CapsLock和ScrollLock的状态?》经验,为你挑选了3个好方法。

如何在.net中找到NumLock,CapsLock和ScrollLock键的状态?



1> Pablo Retyk..:

导入WinAPI函数GetKeyState

[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]
public static extern short GetKeyState(int keyCode);

然后你可以这样使用它

bool CapsLock = (((ushort)GetKeyState(0x14)) & 0xffff) != 0;
bool NumLock = (((ushort)GetKeyState(0x90)) & 0xffff) != 0;
bool ScrollLock = (((ushort)GetKeyState(0x91)) & 0xffff) != 0;

编辑:以上是针对框架1.1,对于框架2.0 +你可以使用

Control.IsKeyLocked



2> Summer-Time..:

使用Framework 2.0及更高版本,您可以使用框架功能

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.iskeylocked%28v=vs.80%29.aspx

    public static bool NumlockActive()
    {
        return Control.IsKeyLocked(Keys.NumLock);
    }



3> Reza Aghaei..:

检查状态

要检查的状态CapsLock,NumLockScrollLock键,你可以使用 Control.IsKeyLocked方法:

var capsLockIsOn = Control.IsKeyLocked(Keys.CapsLock);

积极展现国家

由于当您的应用程序没有焦点处理时,锁定键可以打开或关闭,键盘表单的事件不足以检测键锁定状态的变化,您还应该将逻辑放在其他一些地方,如激活事件您的表单或您需要注册全局键盘钩子.

作为一种简单可靠的解决方案,您可以检查它们的状态Application.Idle.表单关闭时,您必须分离空闲事件处理程序.

public Form1()
{
    InitializeComponent();
    Application.Idle += Application_Idle;
}

void Application_Idle(object sender, EventArgs e)
{
    if (Control.IsKeyLocked(Keys.CapsLock))
        toolStripStatusLabel1.Text = "CapsLock is On";
    else
        toolStripStatusLabel1.Text = "";
}

protected override void OnFormClosed(FormClosedEventArgs e)
{
    Application.Idle -= Application_Idle;
    base.OnFormClosed(e);
}

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有