VB.Net之ProcessStartInfo对象应用:启动外部DOS程序,并实时获取运行信息
来源:互联网 发布:linux启动ssh服务 编辑:程序博客网 时间:2024/04/28 15:26
在传统VB程序中,你可以使用Shell函数启动一个应用程序。当你传送一个数据文件名的时候,VB在相应应用程序中打开这个数据文件。你可以使用一个任选的windowstyle参数控制所启动的应用程序的窗口方式。例如,在VB6中,下面这行代码将启动默认的文本编辑器(通常是记事本)并打开文件”D:\run.txt”:
returnID = Shell("D:\run.txt", vbNormalFocus)
在VB.NET中仍然能够使用Shell功能,并且它已经被做了一些改动,但在.NET框架中它并不是启动应用程序的最好的方法,因为Shell函数有一些严格的限制条件,特别是对外部程序的输入输出控制完全无能为力。而使用System.Diagnostics命名空间中的Process类来启动外部程序,可以简单的使用共享的 Process.Start方法启动一个新的过程,把一个可执行文件名或者可执行应用程序的扩展关联文件名作为参数传输给它。例如,下面的代码启动”D:\run.txt”文件:
System.Diagnostics.Process.Start("D:\run.txt")
ProcessStartInfo类是 Process 组件的一部分,使用 Process 类启动进程时,可以访问附加到当前运行进程时可用的进程信息之外的进程信息,可以使用 ProcessStartInfo 类来更好地控制您启动的进程。最吸引我们的是:通常,标准输入方式为键盘,标准输出和标准错误是显示在监视器屏幕上。然而,我们通过ProcessStartInfo类可以使用 RedirectStandardInput、RedirectStandardOutput 和RedirectStandardError 属性使进程从文件或其他设备获取输入,或者向文件或其他设备返回输出。
下面用一个实例说明,在窗体上放置一个多行文本框,两个按钮,一个Process控件(工具箱的组件面板里面有),名字都为缺省,代码如下:
Public Class Form1 Private _process As Process = Nothing Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '启动cmd.exe 无限输出ping localhost的结果。 Dim psi As New ProcessStartInfo() psi.FileName = "cmd.exe" psi.Arguments = " /c ping localhost /t" psi.UseShellExecute = False psi.RedirectStandardOutput = True psi.CreateNoWindow = True _process = New Process() _process.StartInfo = psi ' 定义接收消息的Handler AddHandler _process.OutputDataReceived, New DataReceivedEventHandler(AddressOf Process1_OutputDataReceived) _process.Start() ' 开始接收 _process.BeginOutputReadLine() End Sub Private Delegate Sub AddMessageHandler(ByVal msg As String) Private Sub Process1_OutputDataReceived(ByVal sender As Object, ByVal e As System.Diagnostics.DataReceivedEventArgs) Handles Process1.OutputDataReceived Dim handler As AddMessageHandler = Function(msg As String) Me.TextBox1.Text += msg + Environment.NewLine Me.TextBox1.[Select](Me.TextBox1.Text.Length - 1, 0) Me.TextBox1.ScrollToCaret() End Function If Me.TextBox1.InvokeRequired Then Me.TextBox1.Invoke(handler, e.Data) End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click _process.CancelOutputRead() _process.Close() End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.TextBox1.HideSelection = False End SubEnd Class
参考:http://msdn.microsoft.com/zh-cn/library/system.diagnostics.processstartinfo(VS.80).aspx
- VB.Net之ProcessStartInfo对象应用:启动外部DOS程序,并实时获取运行信息
- [NET]VB.NET启动并监测外部程序
- VB.NET启动外部程序
- VB.NET启动外部程序
- VB.NET启动外部程序
- VB.NET启动外部程序
- VB.NET启动外部程序
- ProcessStartInfo("ipconfig", "/all"); 获取信息
- vb 运行外部程序
- 使用vb.net等待外部程序运行完毕才继续
- .Net启动外部程序 .
- VB.NET 调用外部程序
- VB.NET控制台程序获取程序运行路径
- CreateProcess 运行外部或DOS程序
- VB.NET 获取磁盘信息
- vb.net获取系统信息
- 一起学android之如何获取手机程序列表以及程序相关信息并启动指定程序 (26)
- 一起学android之如何获取手机程序列表以及程序相关信息并启动指定程序 (26)
- Code Inject代码注入
- 曲线拟合 公式已与excel2007直线趋势图对比过。
- Linux Pthread——1
- for多层循坏跳到外层循环
- 2015-8-12模拟赛总结
- VB.Net之ProcessStartInfo对象应用:启动外部DOS程序,并实时获取运行信息
- Android主线程与子线程通讯
- mybatis中的#和$的区别?
- C#中.tostring(X2)的用法
- Asp.net使用MY97 文本框之间的日期联动
- Android异步消息处理机制解析
- Android 把sd卡文本文件的内容显示到界面
- hdu5371Hotaru's problem
- 关于树莓派的一些事