我现在试图支持的应用程序(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;
答案 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;