我有一个C#的WinForms应用程序,后台运行并监听热键的按下。当热键被按下时,我的窗体会短暂地出现。窗体一直在运行,但是设置为隐藏状态,直到我收到热键事件时,然后将可见属性设置为true。代码如下:
值得注意的是,该表单的最高属性被设置为true。
真正奇怪的部分是,我的C#应用程序从另一个应用程序中窃取焦点后,它将永远不会再次这样做。例如:我启动我的应用程序,然后启动一些全屏应用程序,如《团队要塞2》。然后我按下我的热键。《团队要塞2》最小化,我看到我的表单。然后,无论如何,我都可以恢复TF2,并再次按下我的热键(具有所需的效果),并且TF2将保持聚焦状态。
无论如何,我正在寻找一种解决方法。我在这里找到了很多涵盖类似问题的问题,但所有这些问题都与创建/启动新表单有关,而不是使现有表单可见(除非我错过了什么)。我可以重新设计应用程序,每次需要一个新表单时创建一个新表单,但那将意味着创建另一个始终不可见的表单,只是为了等待热键事件,因此我宁愿将其保留为原样。
有什么想法吗?
void hook_volumeDown(object sender, KeyPressedEventArgs e)
{
this.Visible = true;
}
值得注意的是,该表单的最高属性被设置为true。
真正奇怪的部分是,我的C#应用程序从另一个应用程序中窃取焦点后,它将永远不会再次这样做。例如:我启动我的应用程序,然后启动一些全屏应用程序,如《团队要塞2》。然后我按下我的热键。《团队要塞2》最小化,我看到我的表单。然后,无论如何,我都可以恢复TF2,并再次按下我的热键(具有所需的效果),并且TF2将保持聚焦状态。
无论如何,我正在寻找一种解决方法。我在这里找到了很多涵盖类似问题的问题,但所有这些问题都与创建/启动新表单有关,而不是使现有表单可见(除非我错过了什么)。我可以重新设计应用程序,每次需要一个新表单时创建一个新表单,但那将意味着创建另一个始终不可见的表单,只是为了等待热键事件,因此我宁愿将其保留为原样。
有什么想法吗?