我正在开发一个项目,其中共有 5 个模块,例如 HR、Accounts 等。该软件的设计方式是,所有这 5 个模块都是单独创建的,并使用 shell 命令连接到主项目。现在,真正的问题是,如果我首先在 HR 模块工作,然后在关闭之后我想在 Accounts 工作;程序控制不是从我调用第一个shell命令的地方转移回主项目。有什么办法可以做到这一点。请帮我。
提前致谢
尽管 VB6确实具有可用于异步运行另一个程序的 Shell 函数,但没有“shell 命令” 。
如果这是您正在使用的,并且您有一个简单的程序 P0 案例,它可以生成程序 P1 到 P5 并终止。这些附加程序中的每一个都可以作为终止的一部分重新运行 P0。在这种情况下,您可能希望 P0 保持某些状态,或者根本不需要。如果所需的状态量是最小的,P0 到 P5 可以在调用 Shell 时将信息作为命令行字符串来回传递。
您可能会变得“神乎其神”并让 P0 使用 shell-and-wait 技术,并且在等待时它可以隐藏自己。然后,一旦 P1、P2 等终止,P0 就可以让自己再次可见。
还可以选择将 P0 创建为标准 EXE,将 P1 到 P5 创建为 P0 调用的 ActiveX EXE。
您还可以使用几种 IPC 来将这些单独的程序(而不是“模块”)“联合”成一个有凝聚力的应用程序。
有什么理由必须有五个可执行文件?某种多处理?否则,我会简单地将每个模块放入单独的 DLL 或 OCX 中。将有一个“主”程序,它只是用来加载这些组件。您可以在 DLL 中包含以下类:
每个都使用 Load() 方法实现一个接口。此方法加载模块的主窗体。
或者,您可以是通用的,并且在主程序中具有从包含模块 GUI 的每个 OCX 加载 ActiveX 控件的表单。
您将从每个 Connect 类实现一个事件或回调,以便在模块关闭时,主 EXE 知道它。
如果您绝对必须有单独的 EXE,您可以通过将它们实现为 ActiveX EXE 来做到这一点,并具有与上述相同的类名。正如我所建议的,您的“主 EXE”将负责加载每个子模块。
顺便说一句,无论您使用哪种方法,如果您需要五个单独的“开始”图标,那么您可以创建五个引用主 EXE 的快捷方式,但使用不同的命令行参数。根据使用的命令行参数,您启动不同的模块。