【问题标题】:How to get the text from a pop-up box generated from cmd?如何从cmd生成的弹出框中获取文本?
【发布时间】:2018-11-06 16:12:43
【问题描述】:

我正在尝试获取 Windows 的激活状态。我有这个代码:

 Process proc = new Process();


 proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
 proc.StartInfo.FileName = "cmd.exe";
 proc.StartInfo.Arguments = "/C slmgr /xpr";
 proc.StartInfo.UseShellExecute = false;
 proc.StartInfo.CreateNoWindow = true;
 proc.StartInfo.RedirectStandardOutput = true;
 proc.StartInfo.RedirectStandardInput = true;
 proc.Start();

 string x = "";

 while (!proc.HasExited)
 {
     x += proc.StandardOutput.ReadToEnd();
 }

 return x;

您可能知道,命令“slmgr /xpr”会弹出一个窗口,通知您您的 Windows 激活状态。

执行此代码,我得到了弹出框(并且“x”为空)。 我想要的是获取其中的文本(因此它出现在我表单的标签上)。我想知道是否有任何方法可以只从出现的弹出窗口中提取文本,在这种情况下,它会类似于“机器已永久激活”。

有什么简单的方法可以实现吗?

【问题讨论】:

    标签: c# windows winforms cmd


    【解决方案1】:

    slmgr 实际上是一个 VBScript 文件而不是可执行文件,当您运行它时,它将默认使用 WScript 运行时,该运行时用于窗口脚本并使用消息框作为默认输出。如果您更改为 CScript,您将获得控制台输出:

    proc.StartInfo.FileName = "cscript.exe";
    proc.StartInfo.Arguments = "/nologo \"" + Path.Combine(Environment.SystemDirectory, "slmgr.vbs") + "\" /xpr";
    

    然后你可以捕获这个:Capturing console output from a .NET application (C#)

    您还可以查看脚本文件,看看它在做什么并在您的代码中重新实现它 (ymmv)。

    【讨论】:

    • 这正是我所需要的,谢谢!但是我真的很想知道,如何查看脚本文件?我是这里的初学者,对不起
    • 它是 VBScript,所以它只是一个文本文件,在任何文本编辑器中打开它。
    • 再次感谢您:)
    猜你喜欢
    • 2017-08-04
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 2014-08-11
    • 2012-01-22
    • 1970-01-01
    相关资源
    最近更新 更多