DOBON.NET DOBON.NETプログラミング掲示板過去ログ

MediaInfoをVB.NETと使う

環境/言語:[Windows 7, VB.NET]
分類:[.NET]

こんにちは。

どなたかMediaInfoをVB.NETで使ったことのある方はいらっしゃいますか?Mac用のソフトではこのCLTを使ってビデオやオーディオのスペックを簡単にプリントしていたのですが。ちょっとVB.NETの経験がまだ浅いのでVB.NETでMediaInfo.exeとどうやってやりとりしたらいいのか良くわかりません。ここの記事(http://forum.videohelp.com/threads/340087-Calling-MediaInfo-from-Visual-Basic-to-et-video-info)には「Here is the command line.」という書き込みがありますが、果たしてcommand lineというのが正確に何を意味するのかちょっと自分にはわかりません。ちなみにDiagnostics.Processを使ってみましたがうまくいきません。

Dim process As System.Diagnostics.Process = Nothing
Dim processStartInfo As System.Diagnostics.ProcessStartInfo
processStartInfo = New System.Diagnostics.ProcessStartInfo()
processStartInfo.FileName = "C:\Users\cancan\Desktop\\MediaInfo.exe"
processStartInfo.Verb = "runas"
processStartInfo.Arguments = "C:\Users\cancan\Desktop\More\Movies\Terminator6.avi --LogFile=C:\Users\cancan\Desktop\log.txt"
processStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal
processStartInfo.UseShellExecute = True

Try
process = System.Diagnostics.Process.Start(processStartInfo)
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
If Not (process Is Nothing) Then
process.Dispose()
End If
End Try

どなたか助言がありましたらよろしくお願いします。
どうもmediaInfo.dllを同梱する必要があるようです。次のコードを執行すると3行ぐらい結果が表示されます。つまりビデオ・ファイルが読まれていないということでしょう。


Dim compiler As New Process()
compiler.StartInfo.FileName = "C:\Users\cancan\Desktop\MediaInfo.exe"
compiler.StartInfo.Arguments = "C:\Users\cancan\Desktop\Terminator6.avi"
compiler.StartInfo.UseShellExecute = False
compiler.StartInfo.RedirectStandardOutput = True
compiler.Start()
OutputBox1.Text = compiler.StandardOutput.ReadToEnd
compiler.WaitForExit()
上記のコードで何が問題がわかりました。どうもファイルのパスにスペースがあるとファイルをうまく読めないようです。
Double-quote(Chr(34))でファイルのパスを囲むことで問題が解決しました。
解決ずみ
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板