C# 如何将按键(按键)发送到最小化(非聚焦)表单?
在C#winform中,我有一个应用程序,其中有一个“静默模式”,在该模式下,它被最小化并隐藏在任务栏中,也称为:C# 如何将按键(按键)发送到最小化(非聚焦)表单?,c#,winforms,C#,Winforms,在C#winform中,我有一个应用程序,其中有一个“静默模式”,在该模式下,它被最小化并隐藏在任务栏中,也称为: this.WindowState = FormWindowState.Minimized; this.ShowInTaskbar = false; 但在某一点上,我希望通过按键盘上的某个组合键(例如Alt+Ctrl+Shift+S),程序的主窗口再次显示 但我就是不知道该怎么做 我处理这个问题的方式完全不同,如果用户想要恢复窗口,他必须在特定目录中创建一个名为“SilentMod
this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false;
但在某一点上,我希望通过按键盘上的某个组合键(例如Alt+Ctrl+Shift+S),程序的主窗口再次显示
但我就是不知道该怎么做
我处理这个问题的方式完全不同,如果用户想要恢复窗口,他必须在特定目录中创建一个名为“SilentMode.OFF”的文件。
这样做会让窗户重新打开。
我在我的应用程序中通过一个计时器完成了这项工作,计时器会检查该文件是否是在该目录中创建的,如果是,则显示窗口。
不,这不是一种真正的职业方式
我的问题:如何与最小化的窗口进行通信?
我如何发送它并使它响应我希望它响应的键
我尝试了一些活动,如“离开”和其他一些活动,但没有真正起作用
任何提示都会有很大帮助,谢谢。AFAIK winapapi中没有热键函数的.NET包装器。但您可以通过pinvoke使用RegisterHotkey。下面是一个详细的解释:您可以创建如下方法:
[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();
我想你会发现如何使用[this][1]和[this][2][1]:[2]: