【UiPath 技巧 06】UiPath 中启动进程、获取进程信
问题
有时候我们需要启动进程、关闭进程、获取进程的信息
1. 启动进程

注意设置属性:

要点:
- FileName :填写程序名字,如:"EXCEL.EXE",注意它是字符串形式
- WorkingDirectory :填写程序所在的文件夹,如:"C:\Program Files (x86)\Microsoft Office\Office15"
2. 获取进程信息
方法 1, 使用 Get process Activity ,然后会得到当前所有运行中的 Process 的 Collection。

将结果存储在 colProcess 里面


然后添加 ForEach Activity , 并在内部转换成字符串输出,就可以看到当前存在的所有 process

注意:
ForEach 的 TypeArgument 要改成对应的对应的 System.Diagnostics.Process 才会有对应的方法,默认的Object 没有 Process 对应的属性。
默认 TypeArgument 类型

应该设置成这个:

由于前面已经出现过,很容易选错成这个:

运行之后的结果如下:

注意:括号内的字符串才是进程的名字。以 Excel 进程为例,它的名字是 EXCEL 而不是任务管理器看到的 EXCEL.EXE *32
方法 2 设置 ForEach 的 TypeArgument 之后,直接输出 ProcessName


方法 3 用 Any 方法省去循环。使用 Colprocess.Any(function(p) p.ProcessName.Contains("EXCEL")) 语句可以直接返回一个布尔值,表示进程是否存在。你可以用在 Assign 或者 IF 语句中使用这个语句。

方法 4 判断进程是不是存在,可以用执行 powershell 命令得到进程,并且返回进程名称!如果不存在通过捕获异常的形式判断是否继续打开相关的程序


PowerShell 返回的还是 Process 集合,跟 Get process Activity 的结果一模一样
据说可以通过设置参数来指定返回的数据,暂时没有找到办法
方法 5 Run PowerShell Script Activity,

然后在 .ps1 文件里输入 Get-Process | %{$_.Name}; ,Output 将返回一个字符串集合,包含了所有 Process 的名字

关闭进程
关闭进程使用 Kill Process Activity .


注意:
- Kill process 遇到不存在的 Process 并不会报错
- 使用前先评估是否会出问题再直接杀死进程,避免对其它程序或者用户的影响
更多 UiPath 相关的资讯,请关注公众号:UiPath教程
