【问题标题】:How to make a VB.net 2008 app steal focus on Windows 7?如何使 VB.net 2008 应用程序窃取 Windows 7 的焦点?
【发布时间】:2012-01-20 07:05:38
【问题描述】:

我正在尝试在VB.net 中创建一个应用程序,一旦发生某种情况(在这种情况下,是一个正在创建的文件),它就会出现在前面。我尝试了以下代码,但它只会导致任务栏按钮在Windows 7 上闪烁:

Me.Activate()

我理解这样做的原因,我完全理解为什么人们不希望任何随机应用程序窃取焦点(我也讨厌它)。这是一个使用极其有限的应用程序(实际上只有 3 台计算机会使用它),在这种情况下,用户会希望应用程序弹出在前面(也可以选择关闭它)。

如果在Windows 7 上仍然可以这样做,有什么想法吗?

【问题讨论】:

  • 没有。没有(记录)禁用该行为的方法。否则每一个认为他们的应用程序是宇宙中最好的东西的程序员(阅读:他们所有人)都会滥用它。
  • 优点 :) 是否有可以在 Windows 7 上更改的设置?我知道在 XP 上你可以关闭它。
  • 据我所知,没有。根据您的应用程序的性质,这可能对taskbar notifications 很有用。它的侵入性更小。
  • 我对此进行了研究,但我确实需要一种方法来显示图像。
  • 再次阅读第一条评论。这是不可能的,因为每个人都可能认为他们的应用程序比下一个应用程序更重要。我建议你停止试图规避规则并学会在其中玩耍。 :)

标签: windows vb.net focus


【解决方案1】:

最简单的方法是更改​​三台计算机上的ForegroundLockTimeout 注册表项。这将禁用阻止后台应用程序窃取焦点的 Windows 规则。显然它会允许系统上的所有应用程序窃取焦点。

您还可以通过代码使用SystemParametersInfoSPI_SETFOREGROUNDLOCKTIMEOUT 禁用规则,例如参见here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多