前提・実現したいこと
C#で呼び出した外部のVBScriptファイルの処理(ファイル作成)が完了したら
C#でそのファイルを読み込みたいのですが、ファイル作成が終わる前に読み込みに行ってしまい例外が発生してしまいます。
該当のソースコード
C#
1string args = "chrome"; 2var p = System.Diagnostics.Process.Start("getInfo.vbs", @args); 3p.WaitForExit(); 4 5string ret = ""; 6using (var reader = new System.IO.StreamReader("BrowserVerProduct.txt", System.Text.Encoding.GetEncoding("shift_jis"))) { 7 ret = reader.ReadToEnd(); 8} 9 10return ret;
VBScript
1Option Explicit 2 3Dim args 4args = Wscript.Arguments(0) 5 6Dim objShell 7Set objShell = CreateObject("WScript.Shell") 8 9If StrComp(args, "chrome", 1) = 0 Then 10 objShell.Run "cmd /c dir /B /O-N ""C:\Program Files (x86)\Google\Chrome\Application"" | findstr ""^[0-9].*\>"" > BrowserVerProduct.txt",0,false 11ElseIF StrComp(args, "firefox", 1) = 0 Then 12 objShell.Run "cmd /c ""C:\Program Files\Mozilla Firefox\firefox.exe"" -v | more > BrowserVerProduct.txt",0,false 13ElseIF StrComp(args, "opera", 1) = 0 Then 14 objShell.Run "cmd /c dir /B /O-N ""%USERPROFILE%\AppData\Local\Programs\Opera"" | findstr ""^[0-9].*\>"" > BrowserVerProduct.txt",0,false 15ElseIF StrComp(args, "edge", 1) = 0 Then 16 'Edgeについてはバージョン情報を取得する良い方法がないためバッチを実行してプログラム側で文字列操作 17 objShell.Run "cmd /c GetEdgeVer.bat",0 18End If 19
試したこと
デバッガーで
C#
1var p = System.Diagnostics.Process.Start("BrowserVerProduct.vbs", @args); 2p.WaitForExit(); 3if (p.HasExited) 4{ 5 Console.WriteLine("終了しました。"); 6} 7else 8{ 9 Console.WriteLine("終了していません。"); 10}
を確認するとtrueとなっていて終了しましたがでるのでファイルの作成も完了しているのかと思うのですが…
補足情報(FW/ツールのバージョンなど)
Windows10
C#
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。