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

如何将控制权转移回vb6.0中调用shell命令的程序?,shell,vb6,Shell,Vb6,我正在从事一个项目,其中共有5个模块,如人力资源、会计等。该软件的设计方式是,所有这5个模块分别创建,并使用shell命令连接到主项目。现在,真正的问题是,如果我第一次在人力资源模块工作,并且在结帐后我想在账户工作;程序控制正在从我调用第一个shell命令的地方转移回主项目。有什么办法可以做到这一点吗。请帮帮我 提前感谢没有“shell命令”,尽管VB6有一个shell函数,可用于异步运行另一个程序 如果这是您正在使用的,并且您有一个简单的程序P0案例,它可以生成程序P1到P5并终止。作为终止的

我正在从事一个项目,其中共有5个模块,如人力资源、会计等。该软件的设计方式是,所有这5个模块分别创建,并使用shell命令连接到主项目。现在,真正的问题是,如果我第一次在人力资源模块工作,并且在结帐后我想在账户工作;程序控制正在从我调用第一个shell命令的地方转移回主项目。有什么办法可以做到这一点吗。请帮帮我

提前感谢

没有“shell命令”,尽管VB6有一个shell函数,可用于异步运行另一个程序

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

你可能会变得更“时髦”,让P0使用shell和wait技术,在等待的时候它可以隐藏自己。然后,一旦P1、P2等终止,P0可以再次使其自身可见

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

还有几种类型的IPC可以用来将这些独立的程序(而不是“模块”)联合到一个内聚应用程序中。

没有“shell命令”,尽管VB6有一个shell函数,可以用来异步运行另一个程序

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

你可能会变得更“时髦”,让P0使用shell和wait技术,在等待的时候它可以隐藏自己。然后,一旦P1、P2等终止,P0可以再次使其自身可见

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


还有几种类型的IPC可以用来将这些单独的程序(而不是“模块”)联合到一个内聚的应用程序中。

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

  • P1.连接
  • P2.连接
  • P3.连接
  • 连接
  • 连接
每个都使用Load()方法实现一个接口。此方法加载模块的主窗体

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

您可以从每个Connect类实现一个事件或回调,这样当模块关闭时,master EXE就会知道它

如果您绝对必须有单独的EXE,您可以将它们实现为ActiveX EXE,并使用与上面相同的类名。正如我所建议的,您的“master EXE”将负责加载每个子模块


另一方面,无论使用哪种方法,如果需要五个单独的“开始”图标,则可以创建五个引用master EXE的快捷方式,但使用不同的命令行参数。根据所使用的命令行参数,您可以启动不同的模块。

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

  • P1.连接
  • P2.连接
  • P3.连接
  • 连接
  • 连接
每个都使用Load()方法实现一个接口。此方法加载模块的主窗体

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

您可以从每个Connect类实现一个事件或回调,这样当模块关闭时,master EXE就会知道它

如果您绝对必须有单独的EXE,您可以将它们实现为ActiveX EXE,并使用与上面相同的类名。正如我所建议的,您的“master EXE”将负责加载每个子模块


另一方面,无论使用哪种方法,如果需要五个单独的“开始”图标,则可以创建五个引用master EXE的快捷方式,但使用不同的命令行参数。根据所使用的命令行参数,您可以启动不同的模块。

而不使用脏的Win32黑客吗?COM互操作是一个选项吗(.net的
进程
类我认为会有帮助)?虽然这个问题解释了如何“shell and wait”,但它实际上不会帮助焦点在另一个应用程序上结束,因为它们有单独的输入队列。没有肮脏的Win32黑客?COM互操作是一个选项吗(.net的
进程
类我想会有帮助吗)?虽然这个问题解释了如何“shell and wait”,但它实际上不会帮助焦点在另一个应用程序上结束,因为它们有单独的输入队列。