0

由于我很笨,买了一个没有任何指示灯的键盘,所以我决定编写一个快速程序来弹出 Caps、Scroll 和 Num Lock 的状态。

我决定使用 WinForms,因为这是我喜欢的,我的主要表单类看起来像这样:

globalKeyboardHook gkh = new globalKeyboardHook();

    public Indicators()
    {
        InitializeComponent();
    }

    public void CheckKeyCaps()
    {
        notifyIcon1.BalloonTipText = (IsKeyLocked(Keys.CapsLock)) ? "Caps Lock: ON" : "Caps Lock: OFF";
        notifyIcon1.ShowBalloonTip(100);
    }

    public void CheckKeyScroll()
    {
        notifyIcon1.BalloonTipText = (IsKeyLocked(Keys.Scroll)) ? "Scroll Lock: ON" : "Scroll Lock: OFF";
        notifyIcon1.ShowBalloonTip(100);
    }

    public void CheckKeyNum()
    {
        notifyIcon1.BalloonTipText = IsKeyLocked(Keys.NumLock) ? "Num Lock: ON" : "Num Lock: OFF";
        notifyIcon1.ShowBalloonTip(100);
    }

    private void IndicatorsLoad(object sender, EventArgs e)
    {
        gkh.HookedKeys.Add(Keys.Scroll);
        gkh.HookedKeys.Add(Keys.CapsLock);
        gkh.HookedKeys.Add(Keys.NumLock);
        gkh.KeyUp += gkh_KeyUp;
        Visible = false;
        ShowInTaskbar = false;
        notifyIcon1.Icon = new Icon(SystemIcons.Application, 40, 40);
    }

    public void gkh_KeyUp(object sender, KeyEventArgs e)
    {
        switch (e.KeyCode)
        {
            case Keys.Scroll:
                CheckKeyScroll();
                break;
            case Keys.CapsLock:
                CheckKeyCaps();
                break;
            case Keys.NumLock:
                CheckKeyNum();
                break;
        }
    }

我利用这个库来添加键盘钩子,现在它只会切换 CapsLock 键的弹出窗口。按 Num 或 Scroll Lock 只会导致弹出窗口显示“Scroll Lock: ON”或“Num Lock: ON”。

我尝试过在开关、事件处理程序上使用断点运行调试器,但我无法确定它的正面或反面。我对编程比较陌生(6 个月),所以我假设我在某个地方犯了错误,但我不够精明,无法弄清楚在哪里。

4

0 回答 0