如果我从 VB6 程序调用 Shell Foo.exe,Foo.exe 熄火,我的 VB6 程序也会熄火吗?

If I call Shell Foo.exe from a VB6 program, and Foo.exe flames out, will my VB6 program flame out too?

我再次被迫更新一个陈旧的 vb6 程序,原因让我想把自己扔进交通中。

我写了一个简单的 .Net 应用程序,在某些情况下将被 VB6 程序加壳。

因为 .Net 程序 运行s 在 .Net 4.5.2 中,而我的 VB6 IDE 在 Windows XP 系统上(请杀了我),我完全期待当 VB6 程序在开发环境中将它调用到 运行 时,它(.Net 应用程序)以光荣的方式崩溃。

不幸的是,这没有发生 - 发生的事情是我收到 运行时间错误 5。

这是 VB6 应该进行的调用 -

Shell """" & App.Path & "\Foo.exe"""

就是这样。有问题的 .Net 程序是一个无外观的应用程序(没有 ui,没有控制台,它应该是这样的),而 VB6 程序有一个 GUI,这让我想把偶尔酗酒作为一种爱好。

我唯一能想到的是被调用的程序突然熄火导致 VB6 崩溃 - 这个假设正确吗?如果不是,还有什么问题?

.Net 4.5+ 在 XP 上不受支持,因此我不希望您的应用程序运行。事实上,我不确定您是如何安装 4.5 的。当我尝试时,它在 OS 检查时失败了。结果我不得不以 4.0 为目标。

VB6 不会因为您的 .Net 应用程序而崩溃,因为它不是同一个进程。如您所见,它会出现错误,但您只需处理它并继续。

VB6 Shell 命令如果无法启动指定的程序,将引发运行时错误 5。如果该运行时错误未得到处理,那么您的程序将停止并显示该错误的标准 VB6 错误消息。如评论中所述,OP 的 .NET EXE 无法在 Windows XP 上启动(也许它是为 x64 构建的?)所以他们收到此错误。