【问题标题】:Can I start an application from .NET but not give it focus?我可以从 .NET 启动应用程序但不给它焦点吗?
【发布时间】:2012-03-12 16:17:41
【问题描述】:

我希望我的应用程序启动另一个(第 3 方)应用程序,但没有给予它焦点。第 3 方应用程序是一个 GUI 应用程序,因此它将创建窗口等 - 这很好,我想要它们 - 但我的应用程序仍应保持在前台,直到用户手动切换离开它。

(如何)我可以这样做?

我使用的是 Windows 7,并且正在使用 VS2010、C# 4.0 编写我的应用程序。

【问题讨论】:

    标签: process focus foreground start-process


    【解决方案1】:

    打开第 3 方后,您可以将当前的表单带回前面。

    private void OpenThirdParty
    {
    ....
    
    this.Show();
    }
    

    或者您可以访问当前表单。

    【讨论】:

    • 我无法控制第 3 方应用。另外,我知道如何将它最小化 - 但我不希望那样。我希望 GUI 窗口出现,而不是像有时所说的那样得到“前景之爱”。
    • @试试我所做的改变。
    • 我可以尝试,但我认为这是一个非常不稳定的解决方案。由于多线程(并且我有 8 个虚拟 CPU 内核),无法保证哪个应用程序(我的或第 3 方)将首先调用他们的 Show()。事实上,它最有可能是我的,因为另一个应用程序仍然需要加载所有必需的库、执行初始化等,而我在启动另一个应用程序后立即将此作为下一条指令。
    • 我也不能把它放在计时器或我的焦点丢失事件或任何东西上。 Windows 不允许任意应用程序随意窃取焦点 - 您只能在某些时候这样做,例如响应用户输入或启动时。
    猜你喜欢
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    相关资源
    最近更新 更多