分享

C#中的Process.Start()方法笔记

 长江黄鹤 2020-08-18

1.MSDN链接:http://technet.microsoft.com/zh-cn/library/h6ak8zt5?cs-save-lang=1&cs-lang=csharp#code-snippet-1

2.命名空间:System.Diagnostics;程序集:System.dll;

3.方法定义:

public static Process Start(string fileName,string arguments)

4.参数
fileName
类型:System.String
要在该进程中运行的应用程序文件的名称。
arguments
类型:System.String
启动该进程时传递的命令行实参。
返回值
类型:System.Diagnostics.Process
与该进程关联的新的 Process 组件;如果没有启动进程资源(例如,如果重用了现有进程),则为 null。

5.备注:
使用此重载,通过指定进程资源的文件名和命令行参数来启动进程资源。该重载将资源与新 Process 组件关联。如果该进程已在运行,则不启动其他任何进程。而是重新使用现有进程资源,并且不创建新的 Process 组件。在这种情况下,Start 将 null 返回到调用过程,而不是返回新的 Process 组件。

说明
如果要启动的可执行文件的地址为 URL,则不启动进程并将返回 null。此重载使您得以直接启动进程,而不用首先创建新 Process 实例。此重载是以下显式步骤的替代方法:创建新的 Process 实例,设置 StartInfo 属性的 FileName 和 Arguments 成员,并对 Process 实例调用 Start。

通过指定进程的文件名和参数启动进程类似于在 Windows 的 Start 菜单的 Run 对话框中键入该文件名和命令行参数。因此,文件名不需要表示可执行文件。它可以是其扩展名已经与系统上安装的应用程序关联的任何文件类型。例如,如果已经将文本文件与某个编辑器(如“记事本”)关联,则文件名可以具有 .txt 扩展名;如果已经将 .doc 文件与某个字处理工具(如 Microsoft Word)关联,则它可以具有 .doc 扩展名。同样,Run 对话框也可以用相同的方式接受带有或不带 .exe 扩展名的可执行文件名,.exe 扩展名在 fileName 参数中是可选的。例如,可将 fileName 参数设置为“Notepad.exe”或“Notepad”。如果 fileName 参数表示可执行文件,则 arguments 参数可能表示要对其执行操作的文件,如 Notepad.exe myfile.txt 中的文本文件。如果 fileName 参数代表命令 (.cmd) 文件,arguments 参数必须包括“/c”或“/k”变量以指定完成后命令窗口存在还是保持不变。
与其他重载不同,不带参数的 Start 重载不是 static 成员。如果已经创建了 Process 实例,指定了启动信息(包括文件名),而且希望启动进程资源并将其与现有 Process 实例关联,则请使用该重载。当要创建新的 Process 组件而不是启动现有组件的进程时,请使用 static 重载之一。此重载和不带参数的重载都允许您指定要启动的进程资源的文件名和要传递的命令行参数。
如果在系统中用引号声明了一个路径变量,则在启动该位置中的任何进程时,必须完全限定该路径。否则,系统将找不到该路径。例如,如果 c:\mypath 不在您的路径中,而您使用引号添加它 (path = %path%;"c:\mypath"),则在启动 c:\mypath 中的任何进程时,您必须完全限定它们。

说明
ASP.NET 网页和服务器控件代码在 Web 服务器上的 ASP.NET 辅助进程的上下文中执行。如果在 ASP.NET 网页或服务器控件中使用 Start 方法,则新进程将用有限权限在 Web 服务器上执行。此进程不能在与客户端浏览器相同的上下文中启动,并且不能访问用户桌面。每当使用 Start 启动进程时,都可能需要关闭它,否则将有丢失系统资源的危险。使用 CloseMainWindow 或 Kill 关闭进程。
在此有必要对托管线程中的单元状态作一个说明。当进程组件的 StartInfo 属性的 UseShellExecute 为 true 时,请确保已通过设置 main() 方法的特性[STAThread] 对应用程序设置了线程模型。否则,托管线程可能处于 unknown 状态或进入 MTA 状态,而后一种状态会与设置为 true 的 UseShellExecute 冲突。一些方法要求单元状态不为 unknown。如果未显式设置状态,那么当应用程序遇到这种方法时,它默认为 MTA,而一旦进行了设置,则无法更改单元状态。但是,当操作系统 shell 管理线程时,MTA 将导致引发异常。

6.示例代码:
void OpenWithStartInfo(){ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");startInfo.WindowStyle = ProcessWindowStyle.Minimized;Process.Start(startInfo);startInfo.Arguments = "www.";Process.Start(startInfo); }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多