【问题标题】:Application exit when started by another application由另一个应用程序启动时应用程序退出
【发布时间】:2018-03-04 20:43:36
【问题描述】:

我有一个安装我的应用程序的设置(我的应用程序只是一个隐藏的应用程序,它将数据从我的服务器同步到用户)...

当设置启动我的应用程序时,应用程序完成后退出! (它不应该在完成后退出,因为 Timer 会一次又一次地重新启动功能......)

我使用的安装程序创建者是 InstallForge ,我认为问题出在 InstallForge 上,所以我创建了另一个应用程序来执行 Process.Start("MyApp.exe") 但同样的问题也发生了!

手动打开应用exe没问题,手动打开也没有问题。

编辑:我的应用程序没有任何与应用程序关闭相关的内容。

这是我隐藏应用程序的方式:

Form_Load 事件

Me.ShowInTaskbar = False
Me.Opacity = 0.0

Form_Shown 事件

Me.Visible = False

任何帮助将不胜感激!

谢谢!

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    基于您在这里的一个问题 -> Disable exception errors ( .NET error messages / dialog ) and resume the code

    如果您隐藏异常错误,请删除隐藏它们的代码,然后您将看到“无效路径”错误。

    Application1:应用程序是否正在尝试打开您的应用程序。

    Application2:是你的应用程序。

    如果您的应用程序 (Application2) 有任何行尝试启动与您的应用程序 (Application2) 位于同一文件夹中的另一个 exe 文件...它将引发错误,因此应用程序将退出。

    假设 Application1 在 "C:\app1" 中,而 Application2 在 "C:\app1\myapp" 中。

    当 Application1 执行Process.Start("myapp\app.exe") 时,它会正确启动 Application2 ...但是 Application2 启动另一个位于它的同一文件夹中的 exe 文件为时已晚!你知道为什么?那是因为工作目录已经被 Application1 设置为 "C:\app1" ,而 Application2 必须从 "C:\app1\myapp" 运行它想要的。

    所以简单的解决方案就是在 Application2 上执行此操作

    添加这个:

    Dim strPath As String = System.IO.Path.GetDirectoryName( _
        System.Reflection.Assembly.GetExecutingAssembly().CodeBase)
    

    现在您可以通过以下方式从 Application2 执行任何操作:Process.Start(strPath + "\startthis.exe")

    来源:https://stackoverflow.com/a/2593490/6486232

    或者你必须把Application2的文件放在Application1文件的同一个文件夹中。

    希望对您有所帮助! :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      相关资源
      最近更新 更多