我有一个程序,在调用表单之前我需要做一些初始工作,所以我禁用了应用程序框架设置并编写了我自己的 Main 函数,并在运行表单时调用 Application.Run(myForm)。
一切正常,没有问题,但现在在打开表单之前我需要一些其他服务。与其将所有代码都添加到该程序中,不如将其全部移至其自己的可执行文件中。第二个程序可以编辑第一个程序将使用的文件,所以我需要第一个程序等待,以便它会读取这些更改(如果他们做出)。我想可以很容易地使用 Shell 函数,但是由于各种原因,我正在创建自己的 Process 对象并通过它调用它/等待它。
无论如何,我在 Application.Run 调用之前的某个时间调用了第二个程序。第一个程序等待,我可以成功与第二个程序交互,完全没有麻烦。但完成后,第一个程序的窗口隐藏在屏幕上的任何其他窗口后面。这不会在 XP 中发生,仅在 Vista 中(可能是 7,但我尚未确认)。我已经尝试过手动强制表单出现在前面,最小化然后最大化,获得焦点等,但是除非用户用鼠标手动单击它,否则没有任何东西将它带到前面。
我究竟做错了什么?为什么会出现这种行为?我知道这与等待可执行文件完成有关,因为如果我不强制第一个程序等待一切都很好(除了它不等待)。我可以通过在表单的 Load 事件中调用第二个程序来规避这个问题,但是我必须再次读取文件以捕获更改而不是读取一次,而且它看起来也很糟糕,因为正在绘制表单当第二个程序坐在那里时,真的很慢。
如果有人有任何意见,我将不胜感激。