我在网上找到了它,非常好。我想与大家分享。我在使文本框可以显示命令提示符文本时遇到一些问题。经过10天的搜索,我遇到了这段代码。希望这也会对其他人有所帮助。
using System;
using System.Diagnostics;
using System.Linq;
public class Form1
{
private ProcessStartInfo psi;
private Process cmd;
private delegate void InvokeWithString(string text);
private void Button1_Click(System.Object sender, System.EventArgs e)
{
try
{
cmd.Kill();
}
catch (Exception ex)
{
}
TextBox2.Clear();
if (TextBox1.Text.Contains(" "))
psi = new ProcessStartInfo(TextBox1.Text.Split(" ")(0), TextBox1.Text.Split(" ")(1));
else
psi = new ProcessStartInfo(TextBox1.Text);
System.Text.Encoding systemencoding;
System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.CurrentUICulture.TextInfo.OEMCodePage);
{
var withBlock = psi;
withBlock.UseShellExecute = false;
withBlock.RedirectStandardError = true;
withBlock.RedirectStandardOutput = true;
withBlock.RedirectStandardInput = true;
withBlock.CreateNoWindow = true;
withBlock.StandardOutputEncoding = systemencoding;
withBlock.StandardErrorEncoding = systemencoding;
}
cmd = new Process() { StartInfo = psi, EnableRaisingEvents = true };
cmd.ErrorDataReceived += Async_Data_Received;
cmd.OutputDataReceived += Async_Data_Received;
cmd.Start();
cmd.BeginOutputReadLine();
cmd.BeginErrorReadLine();
}
private void Async_Data_Received(object sender, DataReceivedEventArgs e)
{
this.Invoke(new InvokeWithString(Sync_Output), e.Data);
}
private void Sync_Output(string text)
{
TextBox2.AppendText(text + Environment.NewLine);
TextBox2.ScrollToCaret();
}
}
我非常感谢您为问题寻求解决方案的努力,并且可以认为这是一种很酷的发现。然后,您甚至花时间在此处发布帐户! :)
但是我担心,“共享”不是适用于StackOverflow的概念。这里有一个“问题-答案”方案,而不是像Instagram之类的“我已经做到了”的概念;)
此外,您的帖子仅远程链接到标签“命令”和“提示”。我识别出Delphi代码,这不是“批处理脚本”。
[最后,您可悲地发布了别人的解决方案,就好像是您自己的解决方案一样,没有信誉/没有链接到源。也许代码甚至还没有免费共享?您是否检查了许可条件?恐怕我必须告诉你,这是“侵犯版权”。未经作者事先同意,您复制/发布了一些由他人撰写的文本(在这种情况下为代码)。
[不要感到惊讶,如果您的帖子被迅速删除:(
不过请继续编码! GL,HF! :)