2012-08-17 75 views
0

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

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

我对这种事情的知识是有限的 - 我记得一个类似的挫折与this question

任何想法MessageBox的发生?

回答

0

当您从安装程序直接启动应用程序时不会发生这种情况,因为shell允许它“窃取”焦点。当您从安装程序启动它时,最后一次交互发生在安装程序应用程序中。系统可以防止新窗口从安装程序中窃取焦点。如果安装程序窗口关闭,则用于启动安装程序的资源管理器窗口被激活。由于最近发生前景窗口的切换,所以系统不允许改变前景窗口。另一方面,如果在安装程序窗口从屏幕消失之前显示应用程序窗口,则应用程序将按照Z顺序放置在安装程序下方;当安装程序窗口最终隐藏时,应用程序窗口被激活。

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

0

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

相关问题