我有一种形式的程序。 通过按下一个按钮,它启动的ffmpeg转换。
在的主要形式,在文本框,FFMPEG统计信息输出。 这通过采取从StandardError的ffmpeg的输出是可能的。
Public Sub Console()
Dim Process As New Process
Process.StartInfo.UseShellExecute = False
Process.StartInfo.RedirectStandardError = True
Process.StartInfo.RedirectStandardOutput = True
Process.StartInfo.FileName = current_ffmpeg_path
Process.StartInfo.Arguments = input_params
Process.StartInfo.CreateNoWindow = True
Process.Start()
Dim ffmpeg_stats_output As System.IO.StreamReader = Process.StandardError
Do While Process.HasExited = False
[update all main form textboxes by taking input string from ffmpeg and elaborate it]
Loop
End Sub
问题是,当这种循环执行的文本框和进度条进行更新,但主要形式,不能修改。 其实也有无法控制的所有用户。 所以,如果我想打一个按钮,停止/暂停在主窗体的ffmpeg这不能压为主要形式的任何东西。
有保持其他子内循环,而不主要形式的松散的控制,而他们正在运行的方法吗?
我试图通过调用文本框和进度条另一个对话框的形式来解决它。 但即使是这种形式完全失去控制,直到处理完毕。
要发送暂停/停止转换的ffmpeg(运行不带窗口)是正确的使用:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
SendKeys.Send("q")
SendKeys.Send("^s")
End Sub
或者必须指定,这个密钥发送给当前正在运行的进程?