启动浏览器进程并通过过程ID以稍后关闭



我的示例看起来与此相似:

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

如何在过程启动之前获取流程ID?还是可以将一些GUID设置为将持续存在的另一个标识符?

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

未测试

我认为您应该尝试以下操作:

  1. 知道哪个浏览器是目标计算机上的默认浏览器。我假设Firefox。
  2. 测试浏览器当前正在运行。您可以使用var instances = Process.FindByName("firefox.exe")进行此操作 - 您可能需要通往本地Firefox安装的完整路径。之后,instances包含当前正在运行的所有Firefox实例的手柄。

从这里开始,我们有三种案例要涵盖:

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

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

  3. instances包含多个条目。这意味着多个Firefox-Windows是开放的。我没有解决方案。您必须检查-new-tab选项目标是否始终使用相同的窗口...

最新更新