技术点一)
来源: C#如何判断程序调用的exe已结束 方法一:这种方法会阻塞当前进程,直到运行的外部程序退出
System.Diagnostics.Process exep = System.Diagnostics.Process.Start(@"C:\Windows\Notepad.exe");
exep.WaitForExit();//关键,等待外部程序退出后才能往下执行
MessageBox.Show("Notepad.exe运行完毕"); 方法二:为外部进程添加一个事件监视器,当退出后,获取通知,这种方法时不会阻塞当前进程,你可以处理其它事情
System.Diagnostics.Process exep = new System.Diagnostics.Process();
exep.StartInfo.FileName = @"C:\Windows\Notepad.exe";
exep.EnableRaisingEvents = true;
exep.Exited += new EventHandler(exep_Exited);
exep.Start(); //exep_Exited事件处理代码,这里外部程序退出后激活,可以执行你要的操作
void exep_Exited(object sender, EventArgs e)
{
  MessageBox.Show("Notepad.exe运行完毕");
} ========================================================================================================= 技术点二)
//调用cmd.exe执行命令并获取返回结果 受教于C#程序调用cmd执行命令
      RunCmd("ipconfig")

     //运行cmd命令 并获取返回结果
string RunCmd(string cmd)
{
try
{
Process pro = new Process();
pro.StartInfo.FileName = @"cmd.exe";
pro.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动
pro.StartInfo.RedirectStandardInput = true; //接受来自调用程序的输入信息
pro.StartInfo.RedirectStandardOutput = true; //由调用程序获取输出信息
pro.StartInfo.RedirectStandardError = true; //重定向标准错误输出
pro.StartInfo.CreateNoWindow = true; //不显示程序窗口 pro.Start();
pro.StandardInput.WriteLine($"{cmd}&exit");
pro.StandardInput.AutoFlush = true; string result = pro.StandardOutput.ReadToEnd(); richTextBox1.AppendText(Environment.NewLine);
richTextBox1.AppendText(result);
richTextBox1.AppendText("".PadLeft(, '=')); pro.WaitForExit();
pro.Close(); return result;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return string.Empty;
}
}

以下是输出结果:

=========================================================================================================

技术点三)
// C# 使用cmd.exe调用adb.exe 直接进入shell内

int devicesCount = 0; // 自行获取
string devicesName = "";// 自行获取
if (devicesCount > 0)
{
  Process p = new Process();
  p.StartInfo.FileName = "cmd"; //设定程序名  
  p.StartInfo.Arguments = $"/K adb -s {devicesName} shell"; //设定程式执行參數  
  Console.WriteLine(p.StartInfo.Arguments);
  p.Start();
}

技术点四 )

C# winform webbrowser 浏览器控件禁用右键, 快捷键

  WebBrowser webBrowser1= new WebBrowser();
  webBrowser1.Url = new Uri(@"https://www.cnblogs.com/Katakana/");
  webBrowser1.IsWebBrowserContextMenuEnabled = false; //禁止右键
  webBrowser1.WebBrowserShortcutsEnabled = false;//禁止快捷键

C#判断程序调用外部的exe已结束的更多相关文章

  1. C#调用Exe文件的方法及如何判断程序调用的exe已结束

    很简单的代码就可以实现C#调用EXE文件,如下: 引入using System.Diagnostics; 调用代码: Process.Start(exe文件名); 或直接 System.Diagnos ...

  2. 初学c# -- c#创建开机自启服调用外部交互式exe文件

    在c#创建的开机自启动服务里,调用外部可执行文件有以下问题:1.带窗口的交互式的exe文件调用后,实际并没有被执行:2.服务是随windows启动的,服务启动后可能windows桌面还没出来,会报错误 ...

  3. C#如何判断程序调用的exe已结束

    二个方法:以运行系统记事本为例 方法一:这种方法会阻塞当前进程,直到运行的外部程序退出System.Diagnostics.Process exep = System.Diagnostics.Proc ...

  4. 在C#中调用另一个应用程序或命令行(.exe 带参数)<zz>

    在.net中使用system.diaglostics.Process可以用来调用另一个命令行或程序. using   System.Diagnostics;     如果是dos     Proces ...

  5. C++调用外部应用程序的方法的整理总结(常用)

    一.三个SDK函数:  WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些 ...

  6. C++或C#调用外部exe的分析

    假如有个外部程序名为A.exe,放在目录E:\temp\下,然后我们用C++或者C#写一个程序调用这个A.exe的话(假设这个调用者所在的路径在D:\invoke),通常会采用下面的代码: // C# ...

  7. 判断exe执行结束,事件监听

    [转载]C#调用Exe文件的方法及如何判断程序调用的exe已结束     原文地址:C#调用Exe文件的方法及如何判断程序调用的exe已结束作者:guoguo 很简单的代码就可以实现C#调用EXE文件 ...

  8. windows下调用外部exe程序 SHELLEXECUTEINFO

    本文主要介绍两种在windows下调用外部exe程序的方法: 1.使用SHELLEXECUTEINFO 和 ShellExecuteEx SHELLEXECUTEINFO 结构体的定义如下: type ...

  9. c# 调用外部exe程序

    c#调用外部exe程序,首先要 using System.Diagnostics; 然后开启一个新process System.Diagnostics.ProcessStartInfo p=null; ...

随机推荐

  1. ajax级联实现

    效果如下: 选择第一项,第二项.第三项的内容跟着改变. 选择第二项,第三项的内容跟着改变. 第三项则不影响第一项和第二项. 有几点值得提: 1.html到底是前台拼接还是后台拼接. 我选择的是前台拼接 ...

  2. MFC学习(六)计算器

    1 stdafx.h  所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H.Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使 ...

  3. PCB上 如何显示 汉字

    原理图上有汉字,那如何在PCB上显示汉子呢  ?  而不至于显示乱码 按如下操作  ,双击乱码  ,进入设置模式 设置好后,显示的字体样式.

  4. TIMEQUEST学习之黑金动力(三)

    不知不觉,学到的第四章.但是对于TQ的内部模型和外部模型的完整分析还是没有很好的理解.接着学习......... 我们也了解静态时序分析的第一步骤,亦即时钟方面的约束.此外,也稍微对 Report T ...

  5. spring-cloud配置ribbon负载均衡

    spring-cloud配置ribbon负载均衡 ribbon提供的负载均衡就是开箱即用的,简单的不能再简单了 为了顺利演示此demo,你需要如下 需要提前配置eureka服务端,具体看 https: ...

  6. Strom简单介绍

    1.离线计算是什么? 离线计算:批量获取数据.批量传输数据.周期性批量计算数据.数据展示 代表技术:Sqoop批量导入数据.HDFS批量存储数据.MapReduce批量计算数据.Hive批量计算数据. ...

  7. leetcode824

    class Solution { public: void SplitString(const string& s, vector<string>& v, const st ...

  8. Java微信公众平台开发(十)--微信自定义菜单的创建实现

    转自:http://www.cuiyongzhi.com/post/48.html 自定义菜单这个功能在我们普通的编辑模式下是可以直接在后台编辑的,但是一旦我们进入开发模式之后我们的自定义菜单就需要自 ...

  9. PYTHON 中的字符集

    一.前言 Python中的字符编码是个老生常谈的话题,今天来梳理一下相关知识,希望给其他人些许帮助. Python2的 默认编码 是ASCII,不能识别中文字符,需要显式指定字符编码:Python3的 ...

  10. Hadoop Serialization -- hadoop序列化详解 (2)

    回顾: 回顾序列化,其实原书的结构很清晰,我截图给出书中的章节结构: 序列化最主要的,最底层的是实现writable接口,wiritable规定读和写的游戏规则 (void write(DataOut ...