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”之类的命令,在我使用 Clear 函数之前,我无法在我的文本框中输入内容。有趣的是,我可以退格但不能打字。

将此代码粘贴到 VB.NET 中并添加一个文本框和按钮。你会明白我的意思。

  1. 为什么文字会乱码?
  2. 为什么我无法在我的文本框中输入内容?
4

1 回答 1

3

您的文本出现乱码,因为您的程序没有使用正确的代码页来解码从输出流中读取的字节。TREE命令使用图形字符来表示链接子目录的行,但这些代码点仅表示代码页 437 中的画线字符,本机 MS-DOS(美国英语)代码页。该/A开关使 TREE 命令改为使用标准 ASCII 字符。

于 2013-01-02T20:54:31.540 回答