如何像Office一样在 Delphi 中编写“子”应用程序?

wwwo4jvm  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(128)

Office 2016的行为就像一个MDI应用程序,尽管它不是:如果你在Taskmgr.exe中打开许多文件,则有一个EXCEL.EXE进程正在运行(选项卡“详细信息”):


的数据
但是在“进程”选项卡中有多个条目(实际上列出了窗口):



当我打开第一个文件时,Excel开始变慢。但当我打开第二个和第三个文件时,Excel比第一个文件快。
如何在 Delphi 程序中做到这一点?

zbdgwd5y

zbdgwd5y1#

  • Windows*' * 任务管理器 * 不必要地使用误导性术语来描述实际发生的情况:
  • “进程”选项卡实际上列出了“应用程序”类别的窗口,并且成功地列出了一个进程的多个窗口,或者没有。在旧版本的 Windows 中,* 任务管理器 * 以这种方式列出了窗口,已经有了可疑的选项卡标题“应用程序”,但没有将多个窗口分组和关联到一个进程:


的数据

  • “详细信息”选项卡列出了实际运行的进程,不受它们拥有或显示的窗口数量的限制。在以前的版本中,此选项卡的标题为“进程”:



什么情况?一个进程显示多个窗口。这可以很容易地完成,就像以前一样:您只需确保只运行一个示例来处理多个文档。甚至不需要是真正的MDI。
你想要的是,* 任务管理器 * 还将多个窗口组合在一起。Excel 是如何实现这一点的?看看你的 * 表 *:每个文档都有一个单独的按钮,而不是一般 Excel 本身只有一个按钮。在你的 * Delphi * 程序中,你必须确保每个窗口也必须出现在 * 表上:How to correctly have modeless form appear in taskbar沿着它的答案已经评估了许多这样做的方法。

fgw7neuy

fgw7neuy2#

在 Delphi 中,你可以编写一个单独的应用程序。它将有几个辅助窗口。主窗口和辅助窗口应该有一个MDI风格。
当应用程序启动时,它首先会查看自己的一个副本是否已经在运行。如果没有,它就继续运行;如果前一个副本正在运行,它会向它发送应该打开的文档(文件名),然后退出。前一个运行的应用程序将在一个新的辅助窗口中打开传递的文档。
这是做这件事的总体方法。

相关问题