標準入力を使用しない呼び出しの場合、ProcessStartInfo の .WindowStyle を ProcessWindowStyle.Hidden とすれば、黒い画面(cmd.exe)が表示されなくなるのですが、標準入力にデータを与えようとすると、.UseShellExecute を False にしろと言われ、これを False にすると、黒い画面が復活してしまいます(汗
対策としては、.WindowStyle は忘れて、.CreateNoWindow を True に設定します。(NoWindow なので True で表示なしない。ややこしい…)
また、この場合、データを .write しても標準入力のストリームを開きっぱなしにしていると、.write したデータは呼び出しプロセスにわたらないようなので、忘れずにストリームを .close にします。
(以下のコード例だと、using を抜けるときに 結果的に .close はされるので、なくても動きますが…)
Dim psInfo = New System.Diagnostics.ProcessStartInfo
With psInfo
.FileName = "msg"
.Arguments = "*"
.RedirectStandardInput = True
.UseShellExecute = False
.CreateNoWindow = True
End With
Using ps = New System.Diagnostics.Process()
ps.StartInfo = psInfo
ps.Start()
Using sw = ps.StandardInput
sw.Write("ああああ" & vbCrLf & "いいいいい")
.sw.Close()
End Using
ps.Close()
End Using
ただ、msg コマンドで試した結果なので、ほかのコマンドだと挙動が違うかもしれません…