如何暂停 ffmpeg 而不是在没有 window 的情况下运行?
How to pause ffmpeg than runs without window?
我正在开发一个视频转换器,我希望能够通过按一个按钮来停止或暂停 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 需要 window 才能工作的原因,而 ffmpeg 是 运行 而没有它。还有别的办法吗?也许不使用 sendkeys?
已解决。没有 window 的进程不可能使用 SendKeys。请改用 NtSuspendProcess 和 NtResumeProcess..
有关以下内容的更多信息:
p/invoke NtResumeProcess/NtSuspendProcess 是可调用的平台 API
我正在开发一个视频转换器,我希望能够通过按一个按钮来停止或暂停 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 需要 window 才能工作的原因,而 ffmpeg 是 运行 而没有它。还有别的办法吗?也许不使用 sendkeys?
已解决。没有 window 的进程不可能使用 SendKeys。请改用 NtSuspendProcess 和 NtResumeProcess..
有关以下内容的更多信息:
p/invoke NtResumeProcess/NtSuspendProcess 是可调用的平台 API