System.Diagnostics
之前写工具时用到了System.Diagnostics.Process 和 System.Diagnostics.ProcessStartInfo 来实现在Unity里打开第三方软件,感觉这个操作很骚,特此记录一下。
Process
Docs
提供对本地和远程进程的访问权限并使你能够启动和停止本地系统进程。
属性 | 注解 |
---|---|
BasePriority | 获取关联进程的基本优先级。 |
ProcessName | 获取该进程的名称。 |
StartInfo | 获取或设置要传递给 Start() 的 Process 方法的属性。 |
StartTime | 获取关联进程启动的时间。 |
Close() | 释放与此组件关联的所有资源。 |
Dispose() | 释放由 Component 使用的所有资源。 |
Dispose(Boolean) | 释放此进程使用的所有资源。 |
Kill() | 立即停止关联的进程。 |
Kill(Boolean) | 立即停止关联的进程,并可选择停止其子/后代进程。 |
OnExited() | 引发 Exited 事件。 |
Start() | 启动(或重用)此 Process 组件的 StartInfo 属性指定的进程资源,并将其与该组件关联。 |
Start(ProcessStartInfo) | 启动由包含进程启动信息(例如,要启动的进程的文件名)的参数指定的进程资源,并将该资源与新的 Process 组件关联。 |
Start(String) | 通过指定文档或应用程序文件的名称来启动进程资源,并将资源与新的 Process 组件关联。 |
ProcessStartInfo
指定启动进程时使用的一组值。
属性 | 注解 |
---|---|
属性 | |
ArgumentList | 获取启动应用程序时要使用的命令行参数集合。 添加到列表的字符串无需先进行转义。 |
Arguments | 获取或设置启动应用程序时要使用的一组命令行参数。 |
CreateNoWindow | 获取或设置指示是否在新窗口中启动该进程的值。 |
FileName | 获取或设置要启动的应用程序或文档。 |
WindowStyle | 枚举值之一,它指示是在最大化窗口、最小化窗口、正常(即非最大化也非最小化)窗口还是在不可见的窗口中启动进程。 默认值为 Normal。 |
方式一
使用类的实例 Process 来启动进程。【这里以SublimeText为例】
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "C:\\Sublime Text\\sublime_text.exe";
process.StartInfo = startInfo;
process.Start();
方式二
使用 Process 类本身和静态 Start 方法来启动进程。
其一
Process.Start("C:\\Sublime Text\\sublime_text.exe");
其二
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "C:\\Sublime Text\\sublime_text.exe";
Process.Start(startInfo);
关于SatartInfo里的Arguments 和 ArgumentList
ArgumentList :获取启动应用程序时要使用的命令行参数集合。 添加到列表的字符串无需先进行转义。
ArgumentList 和 Arguments 属性彼此独立, 只能同时使用其中的一个属性。 这两个 API 之间的主要区别在于:对 ArgumentList 所提供的参数进行转义并 在内部生成一个字符串,该字符串将在调用时传递给操作系统 Process.Start(info) 。 因此,如果不确定如何正确地转义参数,则应选择 ArgumentList 而不是 Arguments 。