使用Start.Process()时如何关闭子命令窗口;

273

我希望在命令完成后触发子命令窗口的关闭事件。请记住,这是从控制台应用程序启动的后台进程,因此它永远都不可见。可见的是控制台应用程序。

我尝试使用Exited事件,但是没有用。我尝试依靠CMD来了解何时使用/ c,/ k和退出将其关闭。似乎都不起作用。我还尝试了一个做while循环检查HasExited的方法,除非我在应用程序控制台窗口中键入“ exit”,否则这些方法都无效。它不会关闭,但是会以某种方式触发不可见的子命令窗口关闭。

子命令完成后,还有另一种方法可以关闭它吗?

String msg = "echo %time%; exit;";  
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = msg;
p.EnableRaisingEvents = true;
p.Exited += p_Exited; 
p.Start();
msg += p.StandardOutput.ReadToEnd();

非常感谢你!!

格雷格

我稍微修改了程序以运行子命令处理器,捕获其输出,然后将其写入控制台。

        char quote = '"';
        string msg = "/C " + quote + "echo %time%" + quote;
        System.Diagnostics.Process p = new System.Diagnostics.Process();
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.FileName = "cmd.exe";
        p.StartInfo.Arguments = msg;
        p.EnableRaisingEvents = true;
        p.Exited += (_, __) => Console.WriteLine("Exited!");
        p.Start();
        string msg1 = p.StandardOutput.ReadToEnd();

        Console.WriteLine(msg1);

这是一个完整的程序,使用的语法略有不同,但本质上类似:

using System;
using System.Diagnostics;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            char quote = '"';
            var startInfo = new ProcessStartInfo("cmd", "/C " + quote + "echo %time%" + quote)
            { UseShellExecute = false, RedirectStandardOutput = true };

            var process = new Process { EnableRaisingEvents = true };
            process.StartInfo = startInfo;
            process.Exited += (_, __) => Console.WriteLine("Exited!");
            process.Start();
            string msg1 = process.StandardOutput.ReadToEnd();

            Console.WriteLine(msg1);

            Console.ReadLine();
        }
    }
}

或者,正如该答案所说明的那样,也许只需致电即可DateTimeOffset.Now如果您有兴趣查看亚秒级信息,则可以改用Stopwatchclass。

如果您更愿意使用C#中的命令来驱动命令行,则也可以。伊戈尔·奥斯特洛夫斯基(Igor Ostrovsky)介绍了如何将事件转换为任务。然后使用async / await创建一个看起来像过程的命令和响应序列。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用命令关闭cmd窗口?

来自分类Dev

如何使用变量来构建Process.Start命令?

来自分类Dev

如何使用angularjs在关闭窗口时触发函数

来自分类Dev

使用硒时如何关闭Windows文件上传窗口

来自分类Dev

使用硒时如何关闭Windows文件上传窗口

来自分类Dev

使用Process.Start()时出错

来自分类Dev

在命令中使用“podman start”?

来自分类Dev

如何使用 JavaScript 在单击子元素时关闭父 div?

来自分类Dev

使用rtwbuild()从命令行为Simulink模型生成代码后,如何关闭报告窗口?

来自分类Dev

如何使以“ START”命令行开始的窗口在执行结束时暂停?

来自分类Dev

.NET Process.Start() 关闭来自子进程的事件

来自分类Dev

使用docker start命令时强制容器保持活动状态

来自分类Dev

使用Process.Start()时Win32Exception

来自分类Dev

Java使用Process#start()时,将引发IOException

来自分类Dev

当HTTPHandler.ashx完成ProcessRequest时,如何使用代码关闭浏览器窗口

来自分类Dev

当按使用的时间窗口分组时,Spark 如何确定第一个窗口的 window.start?

来自分类Dev

当用户在模式窗口之外单击时,如何使用jquery关闭w3schools示例中的模式窗口?

来自分类Dev

使用javascript按下按钮时,如何打开一个窗口并关闭另一个窗口?

来自分类Dev

使用隐藏的WindowStyle的Process.Start URL

来自分类Dev

使用Process运行Windows start.exe

来自分类Dev

如何使用Apple Script关闭终端窗口

来自分类Dev

如何使用JavaScript关闭弹出窗口

来自分类Dev

如何使用BATCH或CMD关闭特定窗口?

来自分类Dev

如何使用jQuery关闭特定窗口

来自分类Dev

如何使用触发按钮关闭弹出窗口

来自分类Dev

在使用Angularjs制作的Android应用中关闭子窗口

来自分类Dev

如何在cmd start中使用引号?

来自分类Dev

如何使用pm2.start()?

来自分类Dev

如何使用start_with忽略大写?

Related 相关文章

  1. 1

    如何使用命令关闭cmd窗口?

  2. 2

    如何使用变量来构建Process.Start命令?

  3. 3

    如何使用angularjs在关闭窗口时触发函数

  4. 4

    使用硒时如何关闭Windows文件上传窗口

  5. 5

    使用硒时如何关闭Windows文件上传窗口

  6. 6

    使用Process.Start()时出错

  7. 7

    在命令中使用“podman start”?

  8. 8

    如何使用 JavaScript 在单击子元素时关闭父 div?

  9. 9

    使用rtwbuild()从命令行为Simulink模型生成代码后,如何关闭报告窗口?

  10. 10

    如何使以“ START”命令行开始的窗口在执行结束时暂停?

  11. 11

    .NET Process.Start() 关闭来自子进程的事件

  12. 12

    使用docker start命令时强制容器保持活动状态

  13. 13

    使用Process.Start()时Win32Exception

  14. 14

    Java使用Process#start()时,将引发IOException

  15. 15

    当HTTPHandler.ashx完成ProcessRequest时,如何使用代码关闭浏览器窗口

  16. 16

    当按使用的时间窗口分组时,Spark 如何确定第一个窗口的 window.start?

  17. 17

    当用户在模式窗口之外单击时,如何使用jquery关闭w3schools示例中的模式窗口?

  18. 18

    使用javascript按下按钮时,如何打开一个窗口并关闭另一个窗口?

  19. 19

    使用隐藏的WindowStyle的Process.Start URL

  20. 20

    使用Process运行Windows start.exe

  21. 21

    如何使用Apple Script关闭终端窗口

  22. 22

    如何使用JavaScript关闭弹出窗口

  23. 23

    如何使用BATCH或CMD关闭特定窗口?

  24. 24

    如何使用jQuery关闭特定窗口

  25. 25

    如何使用触发按钮关闭弹出窗口

  26. 26

    在使用Angularjs制作的Android应用中关闭子窗口

  27. 27

    如何在cmd start中使用引号?

  28. 28

    如何使用pm2.start()?

  29. 29

    如何使用start_with忽略大写?

热门标签

归档