启动浏览器进程,并通过进程ID将其关闭后

启动浏览器进程,并通过进程ID将其关闭后

问题描述:

我的例子类似于此:启动浏览器进程,并通过进程ID将其关闭后

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

如何获得进程ID过程开始之前?或者我可以设置一些Guid作为将会持续的另一个标识符吗?

+0

你想传递一个出了在显示网页的网站浏览器的进程ID浏览器实例(会依赖于浏览器)还是想从应用程序中打开网页,然后关闭所有创建的实例? – Michael

+0

@Michael我想要打开这样的网址:http://webpage.com?processId=123123其中processId是标签的URL标识的URL打开。 – karaxuna

+0

@karaxuna int processId = Process.GetCurrentProcess()。Id; –

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

我不明白 – karaxuna

+0

这是一个如何获取刚刚启动的进程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 specifing参数并启动它,然后)

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

  3. instances包含多个条目。这意味着多个firefox窗口打开。我没有解决这个问题。你必须检查-new-tab选择目标总是相同的窗口或不...