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...]

次に、ループ内に ffmpeg を一時停止する if を配置します。

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 を使用してください。

グーグルに関する詳細情報:

呼び出し可能なプラットフォーム API である p/invoke NtResumeProcess/NtSuspendProcess

于 2015-02-05T17:03:06.620 に答える