1

大量のバグを修正した後、ようやくコードが機能するようになりましたが、まだいくつかの小さな問題があります

Dim myprocess As New System.Diagnostics.Process
myprocess.StartInfo.FileName = "cmd.exe"
myprocess.StartInfo.UseShellExecute = False
myprocess.StartInfo.RedirectStandardOutput = True
myprocess.StartInfo.RedirectStandardInput = True
myprocess.StartInfo.WorkingDirectory = "C:\"
myprocess.StartInfo.CreateNoWindow = True
myprocess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
myprocess.Start()

myprocess.StandardInput.WriteLine(prompt.Text)
myprocess.StandardInput.Flush()
myprocess.StandardInput.Close()

prompt.Text = ""
prompt.Text = myprocess.StandardOutput.ReadToEnd

myprocess.StandardOutput.Dispose()
myprocess.StandardOutput.Close()

myprocess.WaitForExit()
myprocess.Close()

問題は、「TREE」などのコマンドを実行すると、ツリーを構成する行を解釈できないことです。「TREE /A」を実行すると問題は解決しますが、単純な「TREE」だけでは正しく解釈されない理由を知りたいです。

また、「TREE」などのコマンドを実行すると、クリア機能を使用するまでテキストボックスに入力できません。興味深いことに、バックスペースはできますが、入力することはできません。

このコードを VB.NET に貼り付け、テキスト ボックスとボタンを追加します。あなたは私が何を意味するかを見るでしょう。

  1. テキストが文字化けするのはなぜですか?
  2. テキストボックスに入力できないのはなぜですか?
4

1 に答える 1

3

プログラムが正しいコード ページを使用して、出力ストリームから読み取られるバイトをデコードしていないため、テキストが文字化けしています。TREEコマンドはグラフィカル文字を使用して、サブディレクトリをリンクする行を表しますが、これらのコード ポイントは、ネイティブの MS-DOS (米国英語) コード ページであるコード ページ 437の線描画文字のみを表します。この/Aスイッチは、TREE コマンドが代わりに標準の ASCII 文字を使用するようにします。

于 2013-01-02T20:54:31.540 に答える