如何将控制权转移回vb6.0中调用shell命令的程序?

时间:2013-06-11 12:11:17

标签: shell vb6

我正在开发一个项目,其中共有5个模块,如人力资源,账户等。软件的设计方式是所有这5个模块分别创建并使用shell命令连接到主项目。现在,真正的问题是,如果我首先在人力资源模块中工作,那么我想在账户中工作;程序控制是否转移回主项目,我称之为第一个shell命令。有没有办法完成这件事。请帮帮我。

提前致谢

2 个答案:

答案 0 :(得分:3)

虽然VB6 确实有 Shell函数,但没有“shell命令”,可以用来异步运行另一个程序。

如果这是您正在使用的,并且您有一个简单的程序P0,可以生成程序P1到P5并终止。这些附加程序中的每一个都可以重新运行P0作为终止的一部分。在这种情况下,您可能希望P0持久保存某些状态或根本不需要。如果所需的状态量最小,P0到P5可以在调用Shell时作为命令行字符串来回传递信息。

你可能会变得“蠢蠢欲动”并让P0使用shell等待技术,等待时它可以隐藏自己。然后,一旦P1,P2等终止,P0就会再次显现。

还可以选择将P0创建为标准EXE,将P1至P5创建为P0调用的ActiveX EXE。

您可以使用多种IPC来将这些单独的程序(而不是“模块”)“联合”到一个有凝聚力的应用程序中。

答案 1 :(得分:1)

为什么必须有五个可执行文件?某种多处理?否则,我只是将每个模块放入一个单独的DLL或OCX中。将有一个“主”程序,只需加载这些组件。您可以在DLL中具有以下类:

  • P1.Connect
  • P2.Connect
  • P3.Connect
  • P4.Connect
  • P5.Connect

每个实现具有Load()方法的接口。此方法加载模块的主要形式。

或者,您可以是通用的,并且在主程序中包含从每个包含模块GUI的OCX加载ActiveX控件的表单。

您将从每个Connect类实现一个事件或回调,以便在模块关闭时,主EXE知道它。

如果绝对必须有单独的EXE,可以通过将它们实现为ActiveX EXE来实现,并使用与上面相同的类名。正如我所说,你的“主EXE”将负责加载每个补贴模块。

顺便说一句,无论您使用哪种方法,如果您需要五个单独的“开始”图标,那么您可以创建五个快捷方式,这些快捷方式引用主EXE,但具有不同的命令行参数。根据使用的命令行参数,启动其他模块。