从安装程序打开时,主程序窗口有时隐藏在前一窗口后面

时间:2012-08-17 03:29:12

标签: c# winforms installer window modal-dialog

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

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

我对这类事情的了解有限 - 我记得来自this question的消息框发生了类似的挫折

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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