使用键盘快捷键从系统托盘最大化 C# 应用程序

raa*_*aaj 3 c# maximize-window winforms

我是否可以知道是否可以使用键盘快捷键而不是单击它来最大化系统托盘中的 Windows 窗体应用程序?

我目前正在尽量减少使用这段代码

//Minimize to Tray with over-ride for short cut
private void MinimiseToTray(bool shortCutPressed)
{
    notifyIcon.BalloonTipTitle = "Minimize to Tray App";
    notifyIcon.BalloonTipText = "You have successfully minimized your app.";

    if (FormWindowState.Minimized == this.WindowState || shortCutPressed)
    {
        notifyIcon.Visible = true;
        notifyIcon.ShowBalloonTip(500);
        this.Hide();
    }
    else if (FormWindowState.Normal == this.WindowState)
    {
        notifyIcon.Visible = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,我需要一个可以最大化它的键盘快捷键。非常感谢!

Ray*_*yes 5

编辑:如果您只是想“保留一个组合键”来在您的应用程序上执行某些操作,那么使用低级键盘挂钩,您可以看到每个按键都转到任何其他应用程序,这不仅是一种矫枉过正,而且是不好的做法,在我个人看来可能会让人们认为您在进行键盘记录!坚持使用热键!

鉴于您的图标不会具有键盘焦点,您需要注册一个全局键盘热键。

其他类似问题:

.NET 的全局热键示例:

Hotkey hk = new Hotkey();
hk.KeyCode = Keys.1;
hk.Windows = true;
hk.Pressed += delegate { Console.WriteLine("Windows+1 pressed!"); };

if (!hk.GetCanRegister(myForm))
{ 
    Console.WriteLine("Whoops, looks like attempts to register will fail " +
                      "or throw an exception, show error to user"); 
}
else
{ 
    hk.Register(myForm); 
}

// .. later, at some point
if (hk.Registered)
{ 
   hk.Unregister(); 
}
Run Code Online (Sandbox Code Playgroud)