启动浏览器进程并传递进程ID以便稍后关闭它

时间:2017-09-04 14:17:22

标签: c# process

我的例子与此类似:

Process.Start("http://www.webpage.com?processId=");

如何在流程开始前获取流程ID?或者我可以将一些Guid设置为另一个将持续存在的标识符吗?

2 个答案:

答案 0 :(得分:6)

Process p =  Process.Start("cmd.exe");
int processId = p.Id;

答案 1 :(得分:0)

未经过测试

我认为你应该尝试以下方法:

  1. 了解哪个浏览器是目标计算机上的默认浏览器。我假设是firefox。
  2. 测试浏览器当前是否正在运行。您可以使用var instances = Process.FindByName("firefox.exe")执行此操作 - 您可能需要本地firefox安装的完整路径。之后instances包含当前正在运行的所有firefox实例的句柄。
  3. 从这里开始,我们有三个案例要讨论:

    1. instances是一个空数组。这意味着浏览器未运行。然后使用var processHandle = Process.Start("firefox.exe")启动浏览器。然后运行以下命令行$"firefox.exe -new-tab http://myurl.com/?id={processHandle.Id}",它(希望)识别出firefox的一个实例已在运行,并打开现有实例中的页面。 (执行此命令也可以使用Process完成,但是您必须创建一个Process实例而不启动它,在StartInfo中指定参数然后启动它)

    2. instances只包含一个条目。因此,我们所要做的就是运行与案例一相同的命令行:$"firefox.exe -new-tab http://myurl.com/?id={instances[0].Id}"

    3. instances包含多个条目。这意味着多个firefox-windows是开放的。我没有解决方案。你必须检查-new-tab选项是否总是在同一个窗口...