运行DOS命令并显示输出

问题描述 投票:0回答:1

我在网上找到了它,非常好。我想与大家分享。我在使文本框可以显示命令提示符文本时遇到一些问题。经过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();
    }
}
command prompt
1个回答
0
投票

我非常感谢您为问题寻求解决方案的努力,并且可以认为这是一种很酷的发现。然后,您甚至花时间在此处发布帐户! :)

但是我担心,“共享”不是适用于StackOverflow的概念。这里有一个“问题-答案”方案,而不是像Instagram之类的“我已经做到了”的概念;)

此外,您的帖子仅远程链接到标签“命令”和“提示”。我识别出Delphi代码,这不是“批处理脚本”。

[最后,您可悲地发布了别人的解决方案,就好像是您自己的解决方案一样,没有信誉/没有链接到源。也许代码甚至还没有免费共享?您是否检查了许可条件?恐怕我必须告诉你,这是“侵犯版权”。未经作者事先同意,您复制/发布了一些由他人撰写的文本(在这种情况下为代码)。

[不要感到惊讶,如果您的帖子被迅速删除:(

不过请继续编码! GL,HF! :)

© www.soinside.com 2019 - 2024. All rights reserved.