二个方法:以运行系统记事本为例
方法一:这种方法会阻塞当前进程,直到运行的外部程序退出
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运行完毕");
}
分享到:
相关推荐
在C#中开发Windows应用程序时,有时我们需要集成输入法功能,以便用户能够使用他们习惯的输入方式输入文本。本文将详细介绍如何在C# Windows程序窗体中调用本地输入法。 首先,理解基础:Windows操作系统提供了标准...
在IT行业中,C#是一种广泛...总的来说,通过C#调用TWAIN来控制扫描仪是一项实用的技术,它使得开发者能够轻松地集成扫描功能到自己的应用程序中。理解并熟练掌握这些步骤,将有助于提升你的Windows桌面应用开发能力。
然后在C#程序中调用这个DLL,实现进程保护功能。以下是移植该方案到C#的一些步骤: 1. **创建C++ DLL**:首先,我们需要在VC++环境下创建一个动态链接库项目,定义一个函数接口,用于检查并防止进程被结束。这个...
在C#中,我们通常会使用`Process`类来启动WinRAR的命令行版本并传递参数来执行任务。 首先,你需要确保用户系统上已经安装了WinRAR,并且其路径被添加到了系统的环境变量PATH中。这样,C#程序可以通过调用"rar"命令...
10. **多页打印**:如果文档内容超过一页,需要在PrintPage事件中判断是否是最后一页,并在适当的时候结束打印。 以下是一个简单的示例代码片段,展示了如何使用PrintDocument和PrintPreviewDialog进行打印预览: ...
有时候,我们可能需要一个程序启动另一个程序(即 EXE 文件),这种操作称为 EXE 文件之间的相互调用。本文将详细介绍如何实现 EXE 文件之间的相互调用,并讨论在实际开发中可能会遇到的问题及解决方法。 #### 相互...
可以通过Process的HasExited属性检查进程是否已结束,IsStillRunning方法(非内置,需要自定义)则可以判断进程是否还在运行。 8. **处理进程异常** 启动进程可能会遇到权限不足、文件不存在等问题,需要使用try-...
在本文中,我们将深入探讨如何使用C#编程语言在Visual Studio 2005环境下创建一个应用程序,该程序能够禁止用户运行指定的程序,如QQ和迅雷,并且具有开机自启动和自我保护功能。 首先,我们需要理解C#的基础知识。...
这个程序可以帮助初学者理解如何在C#中实现算法,并且可以通过调整输入值来测试不同的数字是否为素数。 这个实例不仅展示了基本的素数判断算法,还体现了C#中的条件判断、循环结构以及数学运算。同时,通过开源代码...
总之,C#中的委托和异步调用是提高程序性能和用户体验的关键技术。通过理解这些概念和使用方法,开发者可以编写出高效、响应迅速的程序。在实际开发中,应根据需求选择合适的异步模式,确保代码的可读性和可维护性。
不过这些语言的调用机制和C/C++略有不同,例如在Java中需要使用JNI(Java Native Interface)来调用本地方法,在C#中则使用P/Invoke,而Matlab则使用其自身的DLL调用方法。在调用过程中,需要注意数据类型和内存管理...
在示例程序中,`Main`方法调用了`isLegalTime`并传入了当前时间(2015年8月15日 16:21:31)和一个时间区间字符串。由于当前时间不在给定的任何区间内,因此输出`False`。 这个方法对于处理时间点和时间区间的关系...
在C#中实现这一游戏,你需要掌握以下几个关键知识点: 1. **图形用户界面(GUI)设计**:使用.NET框架中的Windows Forms或WPF创建游戏界面,包括游戏区域、得分显示、控制按钮等元素的布局。 2. **事件处理**:...
在C#中,我们可以通过P/Invoke(平台调用)技术来使用这些API。 1. 打开可执行文件: 要启动一个可执行文件,我们可以使用`System.Diagnostics.Process`类。这个类提供了启动、控制和管理进程的能力。以下代码示例...
在C#中,可以使用委托(Delegate)或事件(Event)来实现回调机制。通过将回调函数与SDK的特定事件绑定,当设备状态改变时,C#程序可以接收到通知并执行相应的操作。 具体到实现步骤,可能包括以下几个关键部分: ...
通过这个项目,我们可以了解如何在C#中利用WinForms构建游戏界面,以及如何编写控制游戏逻辑的代码。 首先,让我们来看看项目的结构。在压缩包中,我们有一个名为“拼图”的文件,这很可能是项目的源代码或者执行...
在C#程序设计中,首先你需要了解C#的基础语法,包括变量、数据类型、控制结构(如if语句、switch语句、for循环和while循环)、函数定义与调用等。这些是编写任何程序的基础,对于构建俄罗斯方块游戏至关重要。 接...
本文将详细介绍如何在C#中实现调用迅雷进行下载的操作。 首先,迅雷提供了API接口供开发者使用,使得我们可以从C#程序中直接启动迅雷并指定下载任务。在C#中,我们通常会使用`System.Runtime.InteropServices`命名...
1. **System.Diagnostics命名空间**:这是C#中处理进程和诊断信息的主要命名空间。`Process`类是该命名空间中的关键类,它允许我们获取、监控和控制进程。 2. **获取进程列表**:要获取计算机上所有正在运行的进程...
在C#中,我们可以利用`Process`类来调用支持此转换的外部工具,比如SWFTools中的`pdf2swf`工具。首先,确保SWFTools已经在系统路径中,或者提供完整的可执行文件路径。然后,你可以创建一个`ProcessStartInfo`实例,...