Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 进程未运行,由我的应用程序启动时控制台窗口为空_Vb.net_Visual Studio_Winforms_Console - Fatal编程技术网

Vb.net 进程未运行,由我的应用程序启动时控制台窗口为空

Vb.net 进程未运行,由我的应用程序启动时控制台窗口为空,vb.net,visual-studio,winforms,console,Vb.net,Visual Studio,Winforms,Console,我创建了一个应用程序,其中在一个函数中使用Processs.start() 流被重定向到richtextbox,它打印控制台所做的一切,同时控制台窗口被隐藏。为了进行调试,控制台是可见的(并且是空白的) 下面是有问题的代码片段: Delegate Sub myappthing_boxDelg(myappthing_text As String) Public myappthing_delegate As myappthing_boxDelg = New myappthing_boxDelg(Ad

我创建了一个应用程序,其中在一个函数中使用
Processs.start()

流被重定向到richtextbox,它打印控制台所做的一切,同时控制台窗口被隐藏。为了进行调试,控制台是可见的(并且是空白的)

下面是有问题的代码片段:

Delegate Sub myappthing_boxDelg(myappthing_text As String)
Public myappthing_delegate As myappthing_boxDelg = New myappthing_boxDelg(AddressOf myappthing)


Public Sub myappthing(myappthing_text As String)

    richtextbox.Text += myappthing_text & Environment.NewLine
    richtextbox.SelectionStart = richtextbox.Text.Length
    richtextbox.ScrollToCaret()
    richtextbox.Text = richtextbox.Text.Replace("[0m", "")
End Sub
上面是用来显示控制台在richtextbox中所说的内容,以及删除最后一行中的任何格式错误的内容

    Public Sub myappthing_procDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs)
    If Me.InvokeRequired = True Then
        Me.Invoke(myappthing_delegate, e.Data)
    Else
        myappthing(e.Data)
    End If
End Sub
下面是我用来结束进程的内容,它不需要是一个干净的结尾,因此进程被终止,处理程序被删除,以便可以在我的应用程序的同一个实例中重新启动

Public Sub kill_myappthing()
    If myappthing_proc_state = True Then
        myappthing_proc.Kill()
        RemoveHandler myappthing_proc.ErrorDataReceived, AddressOf myappthing_procDataReceived
        RemoveHandler myappthing_proc.OutputDataReceived, AddressOf myappthing_procDataReceived
        myappthing_proc.CancelErrorRead()
        myappthing_proc.CancelOutputRead()
        myappthing_proc_state = False
        lbl_status.Text = "Status: Stopped"
    End If
End Sub
下面是我认为问题所在的地方

 Private Sub myappthing()
        myappthing_proc.StartInfo.FileName = ".\backend\myappthingexecutable"
    Dim args As String = "-argument"
    myappthing_proc.StartInfo.Arguments = ("args")
    myappthing_proc.StartInfo.WorkingDirectory = ".\backend\"
    myappthing_proc.StartInfo.RedirectStandardError = True
    myappthing_proc.StartInfo.RedirectStandardOutput = True
    myappthing_proc.EnableRaisingEvents = True
    myappthing_proc.StartInfo.UseShellExecute = False
    myappthing_proc.StartInfo.CreateNoWindow = False
    Application.DoEvents()
    AddHandler myappthing_proc.ErrorDataReceived, AddressOf myappthing_procDataReceived
    AddHandler myappthing_proc.OutputDataReceived, AddressOf myappthing_procDataReceived
    myappthing_proc.Start()
    myappthing_proc.BeginErrorReadLine()
    myappthing_proc.BeginOutputReadLine()
    myappthing_proc_state = True
 End Sub
当我运行应用程序并让这些函数运行可执行文件时,它不会在弹出的控制台窗口或richtextbox中打印任何内容,但是当使用批处理文件运行可执行文件时,所有内容都会在控制台窗口中完美打印。我不知如何是好

如果有任何帮助或正确的方向,我们将不胜感激。谢谢大家!


在我提供的代码中,可以找到可执行文件并在技术上运行(其进程可以在任务管理器中看到),但其控制台输出为空,实际上不执行任何操作。我的一个想法是,我试图运行的可执行文件本身可能会生成一个子进程/第二个控制台窗口,这是我试图从中获取输出的窗口,但我不知道如何从我自己还没有启动的进程重定向流

我认为您可能与工作目录和文件名有冲突。尝试从文件名中删除工作目录。@导致“系统找不到指定的文件”错误的操作。在我提供的代码中,可以找到可执行文件并在技术上运行(其进程可以在任务管理器中看到),但其控制台输出为空,实际上不执行任何操作。我的一个想法是,可能我试图运行的可执行文件本身正在生成一个子进程/第二个控制台窗口,这是我试图从中获取输出的窗口,但是我不知道如何重定向我自己还没有启动的进程中的流。您是否尝试过在没有任何输出重定向的情况下运行您的进程以查看此部分是否工作?我没有测试您的代码,但是在初始化进程时尝试新的进程,其ProcessStartInfo和指定同步对象也是如此(将其设置为RichTextBox所在的形式)。类似于
MyProcess=New Process(),带有{.StartInfo=MyStartInfo、.EnableRaisingEvents=True、.SynchronizingObject=Me}
。另外,您的
myappthing\u proc.StartInfo.Arguments=(“args”)
应该是
myappthing\u proc.StartInfo.Arguments=args
@Jimi感谢您的帮助,但是它仍然不起作用。我发现,当使用批处理文件运行应用程序时,存在三个子应用程序:windows命令处理器、nameofexeimtryingtorun.exe和console窗口主机。然而,当running使用我的应用程序时,windows命令处理器不存在,并且只存在exeimtryngtorun.exe和控制台窗口主机的名称。您认为这可能与此问题有关吗?