程序控制外部程序(VB.Net版)
来源:互联网 发布:unity3d粒子特效下载 编辑:程序博客网 时间:2024/04/27 23:29
控制过程输入输出
有时候,你可能不仅仅想使用简单的命令行,而是想把更复杂的输入信息直接发送到启动的过程中。前面例子中的把输出导入到文件中的方法,并不总是最好的选择。在许多情况下,把输出直接导回你的应用程序可能更有效。对于使用StdIn、StdOut和StdErr的程序,比如控制台应用程序,你可以覆盖默认方法,提供一个StreamWriter来输入,并提供一个StreamReaders来读取StdOut和StdErr输出值。当你启动过程的时候,你需要设置ProcessStartInfo对象的RedirectStandardInput、RedirectStandardOutput和RedirectStandardError属性为True。然后,在启动过程之后,使用Process对象的StandardInput、StandardOutput和StandardError属性来把输入输出流分配到StreamReader和StreamWriter对象。
警告:默认情况下,框架使用Win32 ShellExecute函数,在内部启动过程;但是当你想再分配输入输出流的时候,你必须在启动过程之前设置ProcessStartInfo.UseShellExecute属性为False。注意当你那么做的时候,你必须要么指定到文件的完全路径,要么文件位置必须在环境路径中。例如,下面的代码创建一个不可见的窗口,取得系统目录中.com文件的目录列表,然后在一个消息框中显示结果。
你可以使用SendKeys方法发送任何键入值,包括Alt、Ctrl和Shift键;所以,你可以使用它来保存或载入文件、退出或者执行其他菜单驱动的命令。然而、SendKeys方法只发送键入值到活动窗口(就是有焦点的那个窗口),所以如果一个应用程序在这个过程中失去焦点,那么可能会出现问题。
有时候,你可能不仅仅想使用简单的命令行,而是想把更复杂的输入信息直接发送到启动的过程中。前面例子中的把输出导入到文件中的方法,并不总是最好的选择。在许多情况下,把输出直接导回你的应用程序可能更有效。对于使用StdIn、StdOut和StdErr的程序,比如控制台应用程序,你可以覆盖默认方法,提供一个StreamWriter来输入,并提供一个StreamReaders来读取StdOut和StdErr输出值。当你启动过程的时候,你需要设置ProcessStartInfo对象的RedirectStandardInput、RedirectStandardOutput和RedirectStandardError属性为True。然后,在启动过程之后,使用Process对象的StandardInput、StandardOutput和StandardError属性来把输入输出流分配到StreamReader和StreamWriter对象。
警告:默认情况下,框架使用Win32 ShellExecute函数,在内部启动过程;但是当你想再分配输入输出流的时候,你必须在启动过程之前设置ProcessStartInfo.UseShellExecute属性为False。注意当你那么做的时候,你必须要么指定到文件的完全路径,要么文件位置必须在环境路径中。例如,下面的代码创建一个不可见的窗口,取得系统目录中.com文件的目录列表,然后在一个消息框中显示结果。
Dim myProcess As Process = New Process() Dim s As String myProcess.StartInfo.FileName = "cmd.exe" myProcess.StartInfo.UseShellExecute = False myProcess.StartInfo.CreateNoWindow = True myProcess.StartInfo.RedirectStandardInput = True myProcess.StartInfo.RedirectStandardOutput = True myProcess.StartInfo.RedirectStandardError = True myProcess.Start() Dim sIn As StreamWriter = myProcess.StandardInput sIn.AutoFlush = True Dim sOut As StreamReader = myProcess.StandardOutput Dim sErr As StreamReader = myProcess.StandardError sIn.Write("dir c:/windows/system32/*.com" & _ System.Environment.NewLine) sIn.Write("exit" & System.Environment.NewLine) s = sOut.ReadToEnd() If Not myProcess.HasExited Then myProcess.Kill() End If MessageBox.Show("The 'dir' command window was " & _ closed at: " & myProcess.ExitTime & "." & _ System.Environment.NewLine & "Exit Code: " & _ myProcess.ExitCode) sIn.Close() sOut.Close() sErr.Close() myProcess.Close() MessageBox.Show(s) |
Win32程序
对于不使用StdIn的程序,你可以使用SendKeys方法来输入按键事件。例如,下面这些代码启动记事本并输入一些文本。
Dim myProcess As Process = New Process() //(只能在外部程序的进程结束时通知程序,不能够让我做我想做的事情) //(在指定的毫秒数内等待关联进程进入空闲状态。此适用于具有用户界面并因此具有消息循环的进程。) //进程 //(这才是我想要做的事情) |
你可以使用SendKeys方法发送任何键入值,包括Alt、Ctrl和Shift键;所以,你可以使用它来保存或载入文件、退出或者执行其他菜单驱动的命令。然而、SendKeys方法只发送键入值到活动窗口(就是有焦点的那个窗口),所以如果一个应用程序在这个过程中失去焦点,那么可能会出现问题。
- 程序控制外部程序(VB.Net版)
- VB.NET启动外部程序
- VB.NET启动外部程序
- VB.NET启动外部程序
- VB.NET启动外部程序
- VB.NET启动外部程序
- VB.NET 调用外部程序
- [NET]VB.NET启动并监测外部程序
- vb 运行外部程序
- 使用vb.net等待外部程序运行完毕才继续
- 外部程序控制技术
- Excel插件外部程序控制
- vb.net调用外部DLL
- .Net启动外部程序 .
- ShellExecute实现对外部程序控制
- VB.Net之ProcessStartInfo对象应用:启动外部DOS程序,并实时获取运行信息
- [VB.NET]VB.NET创建外部excel对象
- VB.NET聊天程序
- Windows CE的并行开发
- Eboot代码流程
- 利用HttpWebRequest获取网页内容,由于Gzip压缩导致乱码的情况
- 【原创】CE入门教程 -BY CCB
- 时间格式,日期格式 小例子
- 程序控制外部程序(VB.Net版)
- strcpy & strncpy
- 嵌入开发(WinCE)的一些经验2
- 嵌入开发(WinCE)的一些经验1
- 整合梅花雨日历控件,推出.NET版本
- 我自己要用的东东啦,呵呵!自己收藏!
- java线程模型
- 字符集编码,解码 小例子
- 我的书单--以后每看完一本书就要记录一下。