gpt4 book ai didi

c# - 关于应用程序在 XP/W2K3 中没有获得焦点的问题

转载 作者:行者123 更新时间:2023-11-30 14:20:17 25 4
gpt4 key购买 nike

我有一个用 .NET 编写的应用程序。以前的版本没有问题:您双击该图标或从命令行运行它,当它启动时,它是主窗口并且如您所料具有焦点。

最新版本在主窗口之前显示启动画面,现在启动画面出现在前台,但主画面并不总是在主窗口结束。有时会,有时不会。 (当从命令行启动时,它总是不会)。当主窗口没有出现在前台并获得焦点时,任务栏图标显示为稳定的橙色。

我在网上看到很多关于 MS 如何添加一个工具来防止应用程序从其他应用程序窃取焦点的点击,以 ForegroundLockTimeout 注册表设置和相关设置为中心,但上述不同版本的行为发生在同一台机器上。

我已经尝试在主窗体最终创建时调用 Activate 和 SetForegroundWindow,但都无济于事。

感谢任何帮助。

最佳答案

您可能应该在启动画面消失时将焦点设置到主应用程序窗口。

就 Window 而言,启动画面就是您的应用程序,因为它是进程启动后显示的第一个顶层窗口。因此该窗口获得焦点,但任何其他试图在同一应用程序启动(图标单击/运行命令)上获取焦点的窗口都被认为是焦点小偷。

您可以通过让 Window 认为有权获得焦点的窗口将焦点转移到新窗口来解决这个问题。

因此,您应该在启动画面被销毁之前将 SetFocus 设置在主窗口上。如果您破坏了焦点窗口,那么焦点将无处可寻,这可能就是您的应用当前正在发生的情况。

关于c# - 关于应用程序在 XP/W2K3 中没有获得焦点的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1484644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com