C# 如何防止其他应用窃取焦点?
我有一个全屏窗口,最上面的属性设置为true。每当应用程序更改其WindowsState属性时,“我的窗口”将自动最小化,即使它具有活动焦点。例如,下面的代码举例说明了这个问题。窗口停用3秒后,它将从最小化变为正常,从而最小化其他全屏应用程序C# 如何防止其他应用窃取焦点?,c#,.net,winforms,windowstate,C#,.net,Winforms,Windowstate,我有一个全屏窗口,最上面的属性设置为true。每当应用程序更改其WindowsState属性时,“我的窗口”将自动最小化,即使它具有活动焦点。例如,下面的代码举例说明了这个问题。窗口停用3秒后,它将从最小化变为正常,从而最小化其他全屏应用程序 // Topmost = false private void Form1_Deactivate(object sender, EventArgs e) { System.Threading.Thread.Sleep(3000); this
// Topmost = false
private void Form1_Deactivate(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(3000);
this.WindowState = FormWindowState.Normal;
}
在这种情况下,是否有办法保留全屏窗口的WindowsState属性?我希望用户选择最小化全屏应用程序,因此我希望阻止其他程序窃取焦点 您可能需要进行调查 也许这就是你想要的:
否则,我将支持Henk的建议。如果这是一个kiosk应用程序,并且您是计算机上运行的唯一程序,那么就可以了。否则,这是一个非常糟糕的想法,这就是为什么没有一个记录在案的方法。 正如Raymund Chen所说,这种问题应该在思维实验之后进行,“如果两个程序都能做到这一点怎么办?”
作为一个用户,我真的不希望应用程序能做到这一点。FWIW.请不要窃取我的注意力:下一个问题将是“即使在一个积极阻止我这样做的窗口中,我如何集中注意力?”你真的想开始一场军备竞赛吗?谢谢你的投入,但我的意图不是要开始一场竞赛。上面的链接解释了用户因失去注意力而产生的烦恼。我还发现有一些方法可以在不窃取他人焦点的情况下显示窗口,因此我认为应用程序不应该有权窃取焦点。你如何区分它们这样做与(比如)Alt+Tab?Ctrl+Esc?任务经理?坦率地说,是其他应用程序行为不端,在没有用户直接操作的情况下更改窗口状态。你的应用程序应该不去管任何事情(IMHO)。