Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.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 如何暂停ffmpeg而不是在没有窗口的情况下运行?_Vb.net_Ffmpeg_Backgroundworker_Sendkeys_Pausing Execution - Fatal编程技术网

Vb.net 如何暂停ffmpeg而不是在没有窗口的情况下运行?

Vb.net 如何暂停ffmpeg而不是在没有窗口的情况下运行?,vb.net,ffmpeg,backgroundworker,sendkeys,pausing-execution,Vb.net,Ffmpeg,Backgroundworker,Sendkeys,Pausing Execution,我正在开发一个视频转换器,我想通过按下一个按钮来停止或暂停ffmpeg。谷歌搜索我找到了一种方法,但它不起作用。基本上,我是这样在后台工作程序上启动ffmpeg的: Private Sub bw_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Dim Proc As New Process Proc.StartInfo.UseShellExecute = False Proc

我正在开发一个视频转换器,我想通过按下一个按钮来停止或暂停ffmpeg。谷歌搜索我找到了一种方法,但它不起作用。基本上,我是这样在后台工作程序上启动ffmpeg的:

Private Sub bw_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs)

        Dim Proc As New Process

        Proc.StartInfo.UseShellExecute = False
        Proc.StartInfo.RedirectStandardError = True
        Proc.StartInfo.RedirectStandardOutput = True
        Proc.StartInfo.FileName = current_ffmpeg_path
        Proc.StartInfo.Arguments = input_params
        Proc.StartInfo.CreateNoWindow = True
        Proc.Start()

[do things...]
然后在循环内放置一个if以暂停ffmpeg:

If (pause = 1 Or pause = 2) Then
        AppActivate(Proc.Id)
        SendKeys.SendWait("^(s)")
        SetForegroundWindow(Me)
        pause = 0
    End If

但它不起作用。。可能是因为AppActivate需要一个窗口来工作,而ffmpeg在没有窗口的情况下运行。还有别的办法吗?可能不使用sendkeys?

已解决。无法对没有窗口的进程使用SendKeys。。请改用NtSuspendProcess和NtResumeProcess

更多关于谷歌的信息:


p/invoke NtResumeProcess/NtSuspendProcess是可调用的平台API

可能与否重复这是另一个问题。。。如果没有窗口,我如何发送程序密钥?没有人可以帮助我?我只找到了一种关闭ffmpeg的方法,但是通过进程。杀死。。。我需要发送命令以正确关闭或暂停ffmpeg