在修复了大量错误后,我的代码终于可以工作了,但我仍然遇到一些小问题
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"不能被正确解释。
此外,一旦我执行了一个命令,如"树",我无法在我的文本框中输入,直到我使用我的清除功能。有趣的是,我可以退格,但不能键入。
将此代码粘贴到VB中。并添加一个文本框和按钮。你会明白我的意思的。- 为什么文本变得乱码?
- 为什么我无法在文本框中输入?
您的文本乱码是因为您的程序没有使用正确的代码页来解码从输出流读取的字节。TREE命令使用图形字符来表示链接子目录的行,但是这些代码点仅表示代码页437(本机MS-DOS(美式英语)代码页)中的划线字符。/A
开关使TREE命令使用标准ASCII字符。