【问题标题】:Redirecting schtasks output in C# Windows Form在 C# Windows 窗体中重定向 schtasks 输出
【发布时间】:2023-03-16 03:43:01
【问题描述】:

我有一个我无法解决的问题。我有一个带有文本框、按钮和列表框的 Windows 窗体。我想在文本框中输入 IP,按下按钮,然后将 schtasks 输出重定向到我的列表框。但是,我从来没有得到比第一行更多的东西。此外,我的代码在重定向到文本文件时工作正常。下面是我的代码。

        string machineName = textBox1.Text;

        Process process = new Process();
        process.StartInfo.FileName = "schtasks";
        process.StartInfo.Arguments = " /query /s " + machineName;
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.CreateNoWindow = true;
        process.Start();

        string output = process.StandardOutput.ReadToEnd();
        process.WaitForExit();

        lstOutput.Items.Add(output);

我写入文本文件的代码是相同的,除了最后,我没有写入列表框,而是创建了一个文本写入器并给它一个文件位置。谁能弄清楚我做错了什么?

【问题讨论】:

  • 您确定它不适用于列表框吗?如果您在上述示例的最后一行之后立即执行string test = lstOutput.Items[lstOutput.Items.Count - 1];,您是否获得了整个输出?还是被截断了?我只是想知道它是否会在它的显示中被截断,而不是在数据传输中。
  • 那行给了我一个错误,说对象无法转换为字符串。
  • 抱歉,应该是 string test = lstOutput.Items[lstOutput.Items.Count - 1].ToString();object testObject = lstOutput.Items[lstOutput.Items.Count - 1]; string testString = testObject.ToString(); 但看起来您在下面找到了合适的答案。

标签: c# windows winforms process windows-task-scheduler


【解决方案1】:

我认为您需要更多地解析输出以将其按摩到列表框中。我使用文本框运行您的示例并获得所有输出,就像在命令行中一样。我认为列表框可能只是将所有输出添加为一项?

试试这样的:

    string[] lines = output.Split('\n');
    foreach (string s in lines)
    {
        lbResult.Items.Add(s);
    }

【讨论】:

  • 效果很好。谢谢你。有没有办法控制输出间距?
  • 如果您将列表框中的字体更改为 Courier(或其他均匀间隔的字体),输出会更好看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
  • 2017-06-14
  • 2012-07-11
  • 1970-01-01
相关资源
最近更新 更多