私は、単にprocess.start(MPC-HC.exe)
を使って音楽ファイルのテキストファイルのリストを自動的に連続して再生するvb.netプログラムを持っています。リストが完成していない間に、ユーザがさらなる音楽の演奏を停止しない限り、すべてがうまくいく。process.startの使用後にメインプログラムを終了するにはどうしたらいいですか?
私は音楽をユーザーの介入なしで自動的に再生したいので、各選択がそれ自身で再生を終了した後に、プレーヤーを閉じるように指定する必要があります。これはコマンドラインスイッチ "/ play/close"で行うことができます。
どのようにします:
- は、使用するプレイヤーを指定します。
- は、私が使用し、コマンドラインが私の元のコードでは
を切り替えて追加 -
OpenWith = "C:\Program Files\mpc-hc\mpc-hc.exe"
f = vbDoubleQuote + TextLine + vbDoubleQuote + " /play /close"
がどのように私はプロセスでこれらの事を成し遂げるん
Dim startInfo As New ProcessStartInfo
startInfo.FileName = OpenWith
startInfo.Arguments = f
?ここで
おかげで、
ラス
が示唆答えと更新vb.netコードです:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
OpenFileDialog1.Title = "Please Select a File"
OpenFileDialog1.InitialDirectory = "C:\"
OpenFileDialog1.Filter = "Text Files|*.txt"
OpenFileDialog1.DefaultExt = "*.txt"
OpenFileDialog1.FileName = "*.txt"
OpenFileDialog1.ShowDialog()
If OpenFileDialog1.CheckFileExists Then
filePaths = New Queue(Of String)(File.ReadAllLines(OpenFileDialog1.FileName))
'Execute the first file.
process = Process.Start(filePaths.Dequeue())
Process.EnableRaisingEvents = True
End If
End Sub
Private Sub process_Exited(sender As Object, e As EventArgs) Handles process.Exited
If filePaths.Count = 0 Then
'No more files to execute.
Application.Exit()
Else
'Execute the next file.
Process = Process.Start(filePaths.Dequeue())
Process.EnableRaisingEvents = True
End If
End Sub
これは、あなたが '.WaitForExit()'を実行してUIスレッドをブロックしているためです。次のファイルに移動するタイミングを知るには、 'Exited'イベントに応答する必要があります。 – Enigmativity
私は完全に理解していません - 私は.WaitForExit()を使用しているので、私はメインアプリケーションを終了できません。これは、音楽ファイルを一度に再生したり、開いているファイルが多すぎたりすることがないようにするために必要でした。私が「エグゼクティブイベント」にどのように反応するかについてさらに説明してください。 – Russ
jmcilhinneyの答えは私が示唆しているものです。 – Enigmativity