关于.Net中Process和ProcessStartInfor的使用

System.Diagnostics.Process.Start(); 能做什么呢?它主要有以下几个功能:

1、打开某个链接网址(弹窗)。
2、定位打开某个文件目录。
3、打开系统特殊文件夹,如“控制面板”等。

那么它是怎么实现这几个功能的呢?在讲应用前,我们先来看看Process.Star()的构造方法。

名称     说明
Process.Start ()     启动(或重用)此 Process 组件的 StartInfo 属性指定的进程资源,并将其 与该组件关联。
Process.Start (ProcessStartInfo)     启动由包含进程启动信息(例如,要启动的进程的文 件名)的参数指定的进程资源,并将该资源与新的 Process 组件关联。
Process.Start (String)     通过指定文档或应用程序文件的名称来启动进程资源,并将资源

与新的 Process 组件关联。
Process.Start (String, String)     通过指定应用程序的名称和一组命令行参数来启动一个进程资源 ,并将该资源与新的 Process 组件相关联。
Process.Start (String, String, SecureString, String)     通过指定应用程序的名称、用户名、密码 和域来启动一个进程资源,并将该资源与新的 Process 组件关联起来。
Process.Start (String, String, String, SecureString, String)     通过指定应用程序的名称和一 组命令行参数、用户名、密码和域来启动一个进程资源,并将该资源与新的 Process 组件关联起 来。


(1) publicbool Start ()
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = "iexplore.exe";   //IE浏览器,可以更换
process.StartInfo.Arguments = "http://www.baidu.com";

process.Start();


(2) publicstaticProcessStart (ProcessStartInfostartInfo)
System.Diagnostics.ProcessStartInfo processStartInfo = new 
System.Diagnostics.ProcessStartInfo();
processStartInfo.FileName = "explorer.exe";  //资源管理器
processStartInfo.Arguments = @"D:\";

System.Diagnostics.Process.Start(processStartInfo);


(3) publicstaticProcessStart (stringfileName)
System.Diagnostics.Process.Start(@"D:\Program Files\Tencent\QQ\Bin\QQ.exe");  //直接 调用打开文件


(4) Process.Start (StringfileName, Stringarguments) 

System.Diagnostics.Process.Start("explorer.exe", "D:\\Readme.txt");   //直接打开文件Readme.txt


上面已经举例了用process.start()打开网站的方法,现在讲讲用processs.star()定位到某个文件的 方法。

这种定位方法类似于快捷方式上的查找目标://explorer /select,"D:\Program Files\Tencent \QQ\Bin\QQ.exe"

String path = @"D:\Program Files\Tencent\QQ\Bin\QQ.exe";
System.Diagnostics.Process.Start("explorer.exe", "/select," +path);  //定位打开D:\Program  Files\Tencent\QQ\Bin文件目录并选中了QQ.exe
注意:/select后还有个逗号(,)。

接下来来讲讲通过调用rundll32.exe来打开一些系统特定文件,先简单介绍下rundll32.exe的功能 和作用。
顾名思义,rundll32就是"执行32位的dll文件",也就是执行dll文件中的内部函数,可以以命令行 的形式调用windows32位的动态链接库。
同理,rundll.exe就是"执行16位的dll文件",调用的是16位的动态链接库。我们通过 rundll32.exe执行指令来完成一些功能。


举个例子

System.Diagnostics.Process.Start("rundll32.exe","user.exe,restartwindows");      //系统重启

命令
rundll32命令大全
命令列:rundll32.exe user.exe,restartwindows
功能: 系统重启

命令列:rundll32.exe user.exe,exitwindows
功能: 关闭系统

命令列: rundll32.exe shell32.dll,Control_RunDLL
功能: 显示控制面板

命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
功能: 显示“控制面板-辅助选项-键盘”选项视窗

命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2
功能: 显示“控制面板-辅助选项-声音”选项视窗

命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3
功能: 显示“控制面板-辅助选项-显示”选项视窗

命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4
功能: 显示“控制面板-辅助选项-滑鼠”选项视窗

命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5
功能: 显示“控制面板-辅助选项-传统”选项视窗

命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
功能: 执行“控制面板-添加新硬体”向导。 

命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter
功能: 执行“控制面板-添加新印表机”向导。

命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1
功能: 显示 “控制面板-添加/删除程式” 面板。

命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1
功能: 显示 “控制面板-添加/删除程式-安装/卸载” 面板。

命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2
功能: 显示 “控制面板-添加/删除程式-安装Windows” 面板。

命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
功能: 显示 “控制面板-添加/删除程式-启动盘” 面板。

命令列: rundll32.exe syncui.dll,Briefcase_Create
功能: 在桌面上建立一个新的“我的公文包”。

命令列: rundll32.exe diskcopy.dll,DiskCopyRunDll
功能: 显示复制软碟视窗

命令列: rundll32.exe apwiz.cpl,NewLinkHere %1
功能: 显示“建立快捷方式”的对话框,所建立的快捷方式的位置由%1参数决定。

命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0
功能: 显示“日期与时间”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1
功能: 显示“时区”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
功能: 显示 “控制面板-添加/删除程式-启动盘” 面板。

命令列: rundll32.exe syncui.dll,Briefcase_Create
功能: 在桌面上建立一个新的“我的公文包”。

命令列: rundll32.exe diskcopy.dll,DiskCopyRunDll
功能: 显示复制软碟视窗

命令列: rundll32.exe apwiz.cpl,NewLinkHere %1
功能: 显示“建立快捷方式”的对话框,所建立的快捷方式的位置由%1参数决定。

命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0
功能: 显示“日期与时间”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1
功能: 显示“时区”选项视窗。

命令列: rundll32.exe rnaui.dll,RnaDial [某个拨号连接的名称]
功能: 显示某个拨号连接的拨号视窗。如果已经拨号连接,则显示目前的连接状态的视窗。

命令列: rundll32.exe rnaui.dll,RnaWizard
功能: 显示“新建拨号连接”向导的视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
功能: 显示“显示属性-背景”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
功能: 显示“显示属性-萤屏保护”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
功能: 显示“显示属性-外观”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
功能: 显示显示“显示属性-属性”选项视窗。

命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder
功能: 显示Windows的“字体”档案夹。 

命令列: rundll32.exe rnaui.dll,RnaDial [某个拨号连接的名称]
功能: 显示某个拨号连接的拨号视窗。如果已经拨号连接,则显示目前的连接状态的视窗。

命令列: rundll32.exe rnaui.dll,RnaWizard
功能: 显示“新建拨号连接”向导的视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
功能: 显示“显示属性-背景”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
功能: 显示“显示属性-萤屏保护”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
功能: 显示“显示属性-外观”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
功能: 显示显示“显示属性-属性”选项视窗。

命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder
功能: 显示Windows的“字体”档案夹。

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
功能: 同样是显示Windows的“字体”档案夹。

命令列: rundll32.exe shell32.dll,SHFormatDrive
功能: 显示格式化软碟对话框。

命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0
功能: 显示“控制面板-游戏控制器-一般”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1
功能: 显示“控制面板-游戏控制器-进阶”选项视窗。

命令列: rundll32.exe mshtml.dll,PrintHTML (HTML文档)
功能: 列印HTML文档。

命令列: rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl
功能: 显示Microsoft Exchange一般选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @0
功能: 显示“控制面板-滑鼠” 选项 。

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1
功能: 显示 “控制面板-键盘属性-速度”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,1
功能: 显示 “控制面板-键盘属性-语言”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @2
功能: 显示Windows“印表机”档案夹。

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @4
功能: 显示“控制面板-输入法属性-输入法”选项视窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add
功能: 执行“添加新调制解调器”向导。

命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0
功能: 显示“控制面板-多媒体属性-音频”属性页。

命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1
功能: 显示“控制面板-多媒体属性-视频”属性页。

命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2
功能: 显示“控制面板-多媒体属性-MIDI”属性页。

命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3
功能: 显示“控制面板-多媒体属性-CD音乐”属性页。

命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4
功能: 显示“控制面板-多媒体属性-设备”属性页。 

命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1
功能: 显示“控制面板-声音”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl
功能: 显示“控制面板-网路”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl
功能: 显示ODBC32资料管理选项视窗。

命令列: rundll32.exe shell32.dll,OpenAs_RunDLL {drive:/path/filename}
功能: 显示指定档案(drive:/path/filename)的“打开方式”对话框。

命令列: rundll32.exe shell32.dll,Control_RunDLL password.cpl
功能: 显示“控制面板-密码”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl
功能: 显示“控制面板-电源管理属性”选项视窗。

命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder
功能: 显示Windows“印表机”档案夹。(同rundll32.exe shell32.dll,Control_RunDLL main.cpl 

@2)

命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0 
功能: 显示“控制面板-区域设置属性-区域设置”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1
功能: 显示“控制面板-区域设置属性-数字”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2
功能: 显示“控制面板-区域设置属性-货币”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3
功能: 显示“控制面板-区域设置属性-时间”选项视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4
功能: 显示“控制面板-区域设置属性-日期”选项视窗。

命令列: rundll32.exe desk.cpl,InstallScreenSaver [萤屏保护档案名]
功能: 将指定的萤屏保护档案设置为Windows的屏保,并显示萤屏保护属性视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0
功能: 显示“控制面板-系统属性-传统”属性视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1
功能: 显示“控制面板-系统属性-设备管理器”属性视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2
功能: 显示“控制面板-系统属性-硬体配置档案”属性视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3
功能: 显示“控制面板-系统属性-性能”属性视窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL telephon.cpl
功能: 显示“拨号属性”选项视窗

命令列: rundll32.exe shell32.dll,Control_RunDLL themes.cpl
功能: 显示“桌面主题”选项面板

命令列: rundll32.exe shell32.dll,Control_RunDLL firewall.cpl
功能: 显示“Windows防火墙"面板

命令列: rundll32.exe shell32.dll,Control_RunDLL NetSetup.cpl,@0,WNSW
功能: 显示“无线网络设置"面板

更多的命令请到这里下载:http://download.csdn.net/detail/czw2010/4530206

System.Diagnostics.Process.Start("notepad.exe");        -- 打开记事本

System.Diagnostics.Process.Start("calc.exe ");                -- 打开计算器

System.Diagnostics.Process.Start("regedit.exe ");           -- 打开注册表

System.Diagnostics.Process.Start("mspaint.exe ");        -- 打开画图板

System.Diagnostics.Process.Start("write.exe ");              -- 打开写字板

System.Diagnostics.Process.Start("mplayer2.exe ");        --打开播放器

System.Diagnostics.Process.Start("taskmgr.exe ");          --打开任务管理器

System.Diagnostics.Process.Start("eventvwr.exe ");          --打开事件查看器

System.Diagnostics.Process.Start("winmsd.exe ");           --打开系统信息

System.Diagnostics.Process.Start("winver.exe ");              --打开Wind

System.Diagnostics.Process.Start("regedit.exe ");           -- 打开注册表

System.Diagnostics.Process.Start("mspaint.exe ");        -- 打开画图板

System.Diagnostics.Process.Start("write.exe ");              -- 打开写字板

System.Diagnostics.Process.Start("mplayer2.exe ");        --打开播放器

System.Diagnostics.Process.Start("taskmgr.exe ");          --打开任务管理器

System.Diagnostics.Process.Start("eventvwr.exe ");          --打开事件查看器

System.Diagnostics.Process.Start("winmsd.exe ");           --打开系统信息

System.Diagnostics.Process.Start("winver.exe ");              --打开Windows版本信息

System.Diagnostics.Process.Start("mailto: "+ address);    -- 发邮件

shutdown.exe:

参数:-s 关机   -r重启   -f强行   -t 时间    -a 取消关机   -l 注销    -i 显示用户界面

System.Diagnostics.Process.Start("shutdown.exe","-r");              -- 关闭并重启计算机

System.Diagnostics.Process.Start("shutdown.exe","-s -f");          -- 关闭计算机

System.Diagnostics.Process.Start("shutdown.exe","-s -f 30");     -- 30s后关闭计算机

System.Diagnostics.Process.Start("shutdown.exe","-l");               --注销计算机

System.Diagnostics.Process.Start("winver.exe ");              --打开Windows版本信息

System.Diagnostics.Process.Start("mailto: "+ address);    -- 发邮件

shutdown.exe:

参数:-s 关机   -r重启   -f强行   -t 时间    -a 取消关机   -l 注销    -i 显示用户界面

System.Diagnostics.Process.Start("shutdown.exe","-r");              -- 关闭并重启计算机

System.Diagnostics.Process.Start("shutdown.exe","-s -f");          -- 关闭计算机

System.Diagnostics.Process.Start("shutdown.exe","-s -f 30");     -- 30s后关闭计算机

System.Diagnostics.Process.Start("shutdown.exe","-l");               --注销计算机

System.Diagnostics.Process.Start("shutdown.exe","-a");              --撤销关闭计算机

SpecialFolder枚举成员:

成员名称     说明
ApplicationData     目录,它用作当前漫游用户的应用程序特定数据的公共储存库。

漫游用户在网络上的多台计算机上工作。漫游用户的配置文件保存在网络服务器上,当用户登录

到某个系统上时,它会加载到该系统。
CommonApplicationData     目录,它用作所有用户使用的应用程序特定数据的公共储存库。
CommonProgramFiles     用于应用程序间共享的组件的目录。
Cookies     用作 Internet Cookie 的公共储存库的目录。
Desktop     逻辑桌面,而不是物理文件系统位置。
DesktopDirectory     用于物理上存储桌面上的文件对象的目录。

不应将此目录与桌面文件夹本身混淆,后者是虚拟文件夹。
Favorites     用作用户收藏夹项的公共储存库的目录。
History     用作 Internet 历史记录项的公共储存库的目录。
InternetCache     用作 Internet 临时文件的公共储存库的目录。
LocalApplicationData     目录,它用作当前非漫游用户使用的应用程序特定数据的公共储

存库。
MyComputer     “我的电脑”文件夹。
注意

由于没有为“我的电脑”文件夹定义路径,因此 MyComputer 常数将始终生成空字符串 ("")。
MyDocuments     “我的电脑”文件夹。
MyMusic     “My Music”文件夹。
MyPictures     “My Pictures”文件夹。
Personal     用作文档的公共储存库的目录。
ProgramFiles     “Program files”目录。
Programs     包含用户程序组的目录。
Recent     包含用户最近使用过的文档的目录。
SendTo     包含“发送”菜单项的目录。
StartMenu     包含“开始”菜单项的目录。
Startup     对应于用户的“启动”程序组的目录。

每当用户登录、启动 Windows NT 或更高版本或启动 Windows 98 时,系统均会启动这些程序


System     “System”目录。
Templates     用作文档模板的公共储存库的目录。

通过Environment.GetFolderPath(Environment.SpecialFolder.XXXXX);我们可以轻松地获得系

统特殊文件夹的具体路径,然后用Process.Start()方法打开该文件夹。

例如:

System.Diagnostics.Process.Start(Environment.GetFolderPath

(Environment.SpecialFolder.System));   //打开系统文件夹(System32文件夹)

 [System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
        private static extern int FindWindow(string ClassName, string WindowName);

[System.Runtime.InteropServices.DllImport("user32.dll")]
        private static extern int ShowWindow(int handle, int cmdShow);

[System.Runtime.InteropServices.DllImport("winmm.dll", EntryPoint = "mciSendString", 

CharSet = System.Runtime.InteropServices.CharSet.Auto)]
        private static extern int mciSendString(string lpstrCommand, string lpstrReturnstring, 

int uReturnLength, int hwndCallback);

        private const int SW_HIDE = 0;//API参数表示隐藏窗
private const int SW_SHOW = 5;//API参数表示用当前的大小和位置显示窗口

        ShowWindow(FindWindow("Shell_TrayWnd", null), SW_HIDE);         -- 隐藏隐藏任务栏

        ShowWindow(FindWindow("Shell_TrayWnd", null), SW_SHOW);      --  显示任务栏

        mciSendString("set CDAudio door open", null, 127, 0);       -- 弹出光驱

        mciSendString("set CDAudio door closed", null, 127, 0);     --关闭光驱

-------------------------------------------------------------------------------------------------------------------------------------------------------

到现在为止,关于使用编程语言读写文件的功能已经越来越强大,使用编程语言根据特定的条件生成脚本文件之后需要自动化

执行生成的脚本文件应该怎么做

本文主要是介绍在.Net中System.Diagnostics命名空间下Process类和ProcessStartInfo类的使用

用于启动一个外部程序所使用的类是Process,至于ProcessStartInfo类只是用来传入Process类所需要的参数,

个人理解是有点类似于适配器的操作,不知道是否正确。

最简单的用于启动一个应用程序

[csharp] view plain copy
  1. Process _proc new Process();  
  2. ProcessStartInfo _procStartInfo new ProcessStartInfo("IExplore.exe","http://www.baidu.com");  
  3. _proc.StartInfo = _procStartInfo;  
  4. _proc.Start();  
以上就是简单的使用IE浏览器打开 百度首页 的代码,以上代码等价于
[csharp] view plain copy
  1. <span style="white-space:pre">    </span>Process _proc = new Process();  
  2.         _proc.StartInfo.FileName = "IExplore.exe";  
  3.         _proc.StartInfo.Arguments = "http://www.baidu.com";  
  4.         _proc.Start();  
可以通过直接给Process对象的属性赋值而达到相同的效果。

当需要执行一个脚本,比如执行windows系统下的.bat文件该怎么做

我们现在D盘目录下建立一个bat文件,写上内容

[plain] view plain copy
  1. <span style="white-space:pre">    </span>xcopy /y C:\folder1\1.txt C:\folder2\  
  2. <span style="white-space:pre">    </span>ping localhost -n 3 >nul  
  3. <span style="white-space:pre">    </span>xcopy /y C:\folder1\2.txt C:\folder2\  
  4. <span style="white-space:pre">    </span>ping localhost -n 3 >nul  
  5. <span style="white-space:pre">    </span>xcopy /y C:\folder1\3.txt C:\folder2\  
脚本内容是把folder1的1.txt,2.txt,3.txt文件赋值到folder2下,在每个赋值命令的中间有ping命令,这是一个用于使一个脚本文件暂定一定时间的比较经典做法/y参数作用是当folder2文件夹下有同名的文件时,不提示而直接覆盖源文件,如果不加上这个参数当有同名的文件时会提示是否覆盖,此处暂停的时间为3秒,>nul 作用是只执行命令而不出现消息内容

新建一个C#文件,写上代码:

[csharp] view plain copy
  1. Process _proc = new Process();  
  2.  ProcessStartInfo _procStartInfo = new ProcessStartInfo();  
  3.  _procStartInfo.FileName = @"C:/Test.bat";  
  4.  _procStartInfo.CreateNoWindow = true;//表示是否启动新的窗口来执行这个脚本,默认值为false,既不会开启新的窗口  
  5.  _procStartInfo.UseShellExecute = false;//是否使用外壳来运行程序,设置为true时运行程序弹出新的cmd窗口执行脚本文件
  6.  _procStartInfo.RedirectStandardOutput = true;//获取对象的标准输出流StreamReader对象,用于输出脚本的返回内容  
  7.  _proc.StartInfo = _procStartInfo;  
  8.  _proc.Start();  
  9.  _proc.WaitForExit(1000);  
  10.  _proc.Kill();  
  11.  using (StreamReader sr = _proc.StandardOutput) 
  12.  {  
  13.      String str = sr.ReadLine();  
  14.      while (null != str) 
  15.     {  
  16.          Console.WriteLine(str);  
  17.          str = sr.ReadLine();  
  18.      }  
  19.  }  
  20.  if (_proc.HasExited)//运行完之后Process的HasExited属性可以判断脚本是否运行完毕  
  21.      _proc.Close();  
此处提到三个属性:

CreateNoWindow:表示是否启动新的窗口来执行这个脚本,默认值为false,既不会开启新的窗口,当main线程运行完时,

启动的控制台无法结束,需要等待脚本执行完毕才能继续,当手动设置为true,即脚本在后台新窗口执行(本人目前没有找

到显示该新窗口的方法,如有悉者,敬请告知),main线程运行结束之后不必等待脚本执行完毕即可正常关闭,

此时脚本在后台继续执行直至自动结束,往下看可以看到Process类的成员方法WaitForExit(int time)和Kill()方法,

WaitForExit(int time)用于在time(毫秒)时间内等待脚本执行,当超过这个时间,main继续往下执行,

脚本后台运行直至结束,如果不添加time参数,则无休止等待直至脚本运行完毕,Kill()方法用于停止该脚本的运行。

由前面可以看出脚本总共需要至少6秒钟的时间,此时WaitForExit()参数设置为1000,则一秒之后,main函数不再等待脚本执行,

此时查看folder2文件夹,发现复制了一个1.txt文件,然后运行kill()方法,脚本直接被终止,如果注释Kill()方法,

则脚本会自动运行6秒之后自动停止。


UseShellExecute:是否使用外壳来运行程序,设置为true时运行程序会弹出新的cmd窗口执行脚本文件。

当设置为false时则不使用外壳程序来运行。默认值为true

RedirectStandardOutput:获取对象的标准输出流StreamReader对象,用于输出脚本的返回内容,当该属性设置为true,

则UseShellExecute属性必须设置为false,当加上外壳程序运行时,弹出新的窗口运行内容就是StandardOutput的读取内容。

除此之外还有RedirectStandardInput属性,可以用于默认人为输入命令。

运行完之后Process的HasExited属性可以判断脚本是否运行完毕。

至此,本人对Process类的基本运用的拙见如上所述,有问题可以多多交流。

晚辈第一次发技术博客,请大家多多担待,如有不妥之处,敬请斧正。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sublime 的中文乱码问题

Sublime Text 是现在最受欢迎的文本编辑器&#xff0c;没有之一。它非常简洁&#xff0c;而且对各种代码的高亮显示很美观。但是&#xff0c;它默认不支持 GBK、Shift-JIS 等中文、日本编码格式&#xff0c;故打开此类文件会出现乱码。 安装 Package Control 首先要安装一个包控…

苹果应用上架遇到的问题(2017年4月27日)

在更新app store的时候报&#xff08;如图&#xff09;&#xff1a; ERROR ITMS-90086: "Missing 64-bit support. iOS apps submitted to the App Store must include 64-bit support and be built with the iOS 8 SDK or later. We recommend using the default "S…

工作者对象HttpWorkerRequest

在ASP.NET中&#xff0c;用于处理的请求&#xff0c;需要封装为HttpWorkerRequest类型的对象。该类为抽象类&#xff0c;定义在命名空间System.Web下。 #region Assembly System.Web.dll, v4.0.0.0 // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFr…

C#输入输出重定向

当 Process 将文本写入其标准流中时&#xff0c;通常将在控制台上显示该文本。通过重定向 StandardOutput 流&#xff0c;可以操作或取消进程的输出。例如&#xff0c;可以筛选文本、用不同方式将其格式化&#xff0c;也可以将输出同时写入控制台和指定的日志文件中。有两种方式…

C语言笔试常考知识点

1. const 关键字 a) const int a; b) int const a; c) const int *a; d) int * const a; e) int const * const a; 解析&#xff1a; a) a为一个int型变量&#xff0c;在它被定义时就应当对其初始化&#xff0c;因为以后就没有机会再去改变它了。 b) 与 a) 是一个意思&a…

苹果应用上架,一些信息的勾选(2017年4月27日)

1、分级的各种选项的选择全部选否 &#xff08;我们公司是医疗相关的app&#xff0c;医疗的选项也是选择的否&#xff09; 2、

jsp页面路径问题

jsp路径默认不是项目跟路径 一、 <% page language"java" import"java.util.*" pageEncoding"utf-8"%> <% String path request.getContextPath(); String basePath request.getScheme() "://" request.getServerName() …

C# 线程池ThreadPool

什么是线程池&#xff1f;为什么要用线程池&#xff1f;怎么用线程池&#xff1f; 1. 什么是线程池&#xff1f;.NET Framework的ThreadPool类提供一个线程池&#xff0c;该线程池可用于执行任务、发送工作项、处理异步 I/O、代表其他线程等待以及处理计时器。那么什么是线程池…

苹果应用上架,图片的要求(2017年4月27日)

看这个提示应该就明白了吧。 哈哈&#xff0c;我还是自己再说一遍加深一下印象吧&#xff1a;如果应用在各个尺寸iphone屏幕上面外观一样&#xff0c;就只准备5.5英寸的图就可以了&#xff1b;如果有所不同&#xff0c;就按照实际情况&#xff0c;准备不同屏幕尺寸的图片即可。…

jQuery操作checkbox

2012欧洲杯"死亡之组"小组出线的国家队是&#xff1a;<br> <inputtype"checkbox"name"nation"value"Germany">德国 <inputtype"checkbox"name"nation"value"Denmark">丹麦 <input…

android Instrumentation 转载

Android提供了一系列强大的测试工具&#xff0c;它针对Android的环境&#xff0c;扩展了业内标准的JUnit测试框架。尽管你可以使用JUnit测试Android工程&#xff0c;但Android工具允许你为应用程序的各个方面进行更为复杂的测试&#xff0c;包括单元层面及框架层面。Android测试…

Linker command failed with exit code 1(use -v to see invocation)

Linker command failed with exit code 1(use -v to see invocation) 出现这个问题的原因是&#xff1a;工程当中存在相同的文件&#xff0c;找到该文件将其删除即可

【C#学习笔记】使用C#中的Dispatcher

form:https://www.jianshu.com/p/0714fc755988之前的文章说过了如何使用BackgroundWorker&#xff0c;今天要说的是WPF程序员处理多线程的另外一个方式 - Dispatcher当我们打开一个WPF应用程序即开启了一个进程&#xff0c;该进程中至少包含两个线程。一个线程用于处理呈现&…

流媒体 关键词解释

流媒体 流媒体是指采用流式传输的方式在网上播放的媒体格式, 是边传边播的媒体&#xff0c;是多媒体的一种! 然后就是大家需要了解的几个关键词 帧:视频是由很多连续图像组成, 每一帧就代表一幅静止的图像 GOP:&#xff08;Group of Pictures&#xff09;画面组&#xff0c;一个…

[C#] 等待启动的进程执行完毕

from: https://www.cnblogs.com/qqhfeng/p/4769524.html有能有时候我们启动了一个进程&#xff0c;必须等到此进程执行完毕&#xff0c;或是&#xff0c;一段时间&#xff0c; 关闭进程后再继续往下走。Example sample1 等待应用程序执行完毕 //等待应用程序执行完毕private vo…

html body标签

table table 属性&#xff1a; border &#xff1a;定义表格的边框宽度&#xff0c;默认为0&#xff0c;即无边框。<table border"1"> title &#xff1a;表格的提示信息&#xff0c;当鼠标移到表格上方时&#xff0c;所提示的信息。 cellpadding &#xff1a;…

创建字符串的方法

//创建一个字符串常量 NSString *str"字符串"; //创建一个空的字符对象 NSString *str1[[NSString alloc]init];//实例方法 NSString *str2[NSString string];//类方法 //快速创建一个字符串 NSString *str3[[NSString alloc]initWithString:"字符串"];//实…

DataReceivedEventHandler 委托 接收调用执行进程返回数据

https://msdn.microsoft.com/zh-cn/library/azure/system.diagnostics.datareceivedeventhandler备注创建 DataReceivedEventHandler 委托时&#xff0c;需要标识将处理该事件的方法。 若要将事件与事件处理程序关联&#xff0c;请将该委托的一个实例添加到事件中。 除非移除了…

coreData

CoreData使用 创建步骤流程 第一步先创建.xcdatamodeld文件&#xff08;New File -> iOS -> Core Data ->Data Model&#xff09; 屏幕快照 2016-07-07 下午10.40.16.png名字虽然可以任意取&#xff0c;但最好还是取和自己存储数据库名字一样的名字。这样可读性更高些…

命令行下mysql新建用户及分配权限

创建用户&#xff1a; CREATE USER usernamehost IDENTIFIED BY password; 说明:username – 你将创建的用户名, host – 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如 果想让该用户可以从任意远程主机登陆,可以使用通配符%. password – 该用户的登陆密…