0

我正在开发视频转换器,我希望能够通过按下按钮来停止或暂停 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?

4

1 回答 1

0

解决了。对于没有窗口的进程,不可能使用 SendKeys .. 改用 NtSuspendProcess 和 NtResumeProcess..

更多信息谷歌搜索:

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

于 2015-02-05T17:03:06.620 回答