0

在 C# winform 中,我有一个应用程序,其中有一个“静音模式”,在该模式下,它被最小化并从任务栏中隐藏,AKA:

this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false;

但是在某个时刻,我希望通过按键盘上的某个键组合再次显示程序的主窗口,例如Alt+ Ctrl+ Shift+S 但我只是不知道该怎么做。

我解决这个问题的方式完全不同,如果用户想要恢复窗口,他必须在特定目录中创建一个名为“SilentMode.OFF”的文件。这样做将使窗口恢复。我设法通过我的应用程序中的计时器来做到这一点,计时器检查是否在该目录中创建了该文件,如果是,则显示窗口。这并不是真正的专业做事方式。

我的问题:如何与最小化的窗口进行通信?我如何发送它并让它响应我希望它响应的键?

我尝试了一些事件,例如Leave事件和其他一些事件,但并没有真正起作用。

任何提示都会有很大帮助,谢谢。

4

2 回答 2

1

AFAIK 没有用于 winapapi 中热键功能的 .NET 包装器。但您可以通过 pinvoke 使用 RegisterHotkey。这里有详细解释: http: //www.codeproject.com/Articles/5914/Simple-steps-to-enable-Hotkey-and-ShortcutInput-us

于 2012-08-25T14:03:35.127 回答
-1

您可以制作如下方法:

[DllImport("user32.dll")]
static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey); 

private void WaitForHotKeys()
{
       if(GetAsyncKeyState(Keys.Alt) != 0 && GetAsyncKeyState(Keys.Control) != 0 && 
          GetAsyncKeyState(Keys.Shift) != 0 && GetAsyncKeyState(Keys.S) != 0)
       {
          this.WindowState = FormWindowState.Normal;
          this.ShowInTaskbar = true;
       }       
}

并添加您的加载方法:

Thread myThread = new Thread(new ThreadStart(WaitForHotKeys));
myThread.Start();
于 2012-08-25T14:26:24.163 回答