0

我尝试了两个安装程序——Setup2go 和 Installmate Builder,我也遇到了同样的问题。在安装的最后一个窗口,我选择“安装完成后打开程序”选项,有时(大约 10% 的时间?),我的(Winforms)应用程序的主窗口会在我使用的 Windows Explorer 目录窗口后面打开从中打开安装 exe。

令人沮丧的是 - 我无法可靠地重现问题(问题似乎发生在大约 10-20% 的时间)。如果这有什么不同,我正在使用 Windows 7。为了澄清,如果我直接打开可执行文件(而不是从安装 exe),问题永远不会发生。

我对这类事情的了解是有限的 - 我记得这个问题的 MessageBox 发生了类似的挫败感

有任何想法吗?

4

2 回答 2

0

当您直接从安装程序启动应用程序时不会发生这种情况,因为 shell 允许它“窃取”焦点。当您从安装程序启动它时,最后一次交互发生在安装程序应用程序中。系统会阻止新窗口从您的安装程序中窃取焦点。如果安装程序窗口关闭,则用于启动安装程序的资源管理器窗口将被激活。由于最近发生了前台窗口的切换,系统不允许更改前台窗口。

另一方面,如果您的应用程序窗口在安装程序窗口从屏幕上消失之前显示,则该应用程序将按 Z 顺序放置在安装程序的下方;当安装程序窗口最终被隐藏时,应用程序窗口被激活。

所以这都与显示和隐藏窗口之间的时间有关。
虽然我不是这方面的专家。您可以使用消息跟踪器和 WinAPI 调用跟踪器(如 Spyxx),它们可以为您提供有关系统中发生的情况以及为什么应用程序的新窗口位于资源管理器窗口下方的更多详细信息。

于 2012-08-18T17:23:59.240 回答
0

确保窗口的标题没有改变,直到最后一刻。我将Text = "blahblah"行移出 Form_load 事件,进入 Form1_Shown 事件,现在隐藏的任务栏图标问题已经消失。此外,窗口在加载时不会闪烁。

于 2016-04-03T07:04:41.283 回答