Application.Restore没让我到达以前的位置,为什么?

时间:2010-01-29 13:39:54

标签: delphi forms delphi-2009 restore

我现在试图支持的应用程序(a former creation of mine)是一个完整的混乱,因此我将其扩展为一个单独的可执行文件,然后我启动它,调用application.minimize;和{{1 (最近创建的进程)。在那之后我打电话给WaitForSingleObject让我回到我离开的地方。

application.restore

我可以看到(Win XP),如何描述它?应用程序的框架从任务栏跳出来,就像应用程序正在将自身恢复到屏幕一样,但它确实如此实际上没有显示。正如你所看到的,我非常绝望并结合了app.restore,app.bringtofront,form.bringtofront,form.show ......但我认为我需要某种应用程序。显示,激活,聚焦......不能似乎找到了那些。

另外,为什么这还不够?

application.Minimize;
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
Application.Restore;
Application.BringToFront;
BringToFront; //the topmost form which was used to launch the app
Show;

修改

主要表单是application.Minimize; WaitForSingleObject(ProcInfo.hProcess, INFINITE); Application.Restore; ,这会调用wsMaximized,然后最终会尝试最小化应用,启动其他进程并还原应用。我认为诀窍在于最顶层形式的MODALity。

另一个(最顶层)表单的示例代码,显示为模态:

anotherform.showmodal;

1 个答案:

答案 0 :(得分:6)

ShowModal会导致禁用所有形式的应用程序,但模式窗体除外。您不能最小化,随意恢复禁用的窗口。试试吧等;

  if Result then
  begin
    EnableWindow(Application.MainForm.Handle, True);
    application.Minimize;
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);
    Application.Restore;
    EnableWindow(Application.MainForm.Handle, False);
    Application.BringToFront;
  end;