我在修复了大量的bug之后终于让我的代码工作了,但我仍然遇到了一些小问题
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”之类的命令,在使用Clear函数之前,我无法输入文本框。有趣的是,我能够退格但不能打字。
将此代码粘贴到VB.NET中并添加文本框和按钮。你会明白我的意思。
答案 0 :(得分:3)
您的文字是乱码,因为您的程序没有使用正确的code page来解码从输出流中读取的字节。 TREE命令使用图形字符来表示链接子目录的行,但这些代码点仅表示code page 437中的行绘图字符,即本机MS-DOS(美国英语)代码页。 /A
开关使TREE命令改为使用标准ASCII字符。