启动浏览器进程,并通过进程ID将其关闭后
我的例子类似于此:启动浏览器进程,并通过进程ID将其关闭后
Process.Start("http://www.webpage.com?processId=");
如何获得进程ID过程开始之前?或者我可以设置一些Guid作为将会持续的另一个标识符吗?
Process p = Process.Start("cmd.exe");
int processId = p.Id;
我不明白 – karaxuna
这是一个如何获取刚刚启动的进程ID的示例。 –
没有测试
我想你应该尝试以下方法:
- 知道哪些浏览器是在目标计算机上的默认浏览器。我假设firefox。
- 测试浏览器当前是否正在运行。你可以用
var instances = Process.FindByName("firefox.exe")
来做到这一点 - 你可能需要本地firefox安装的完整路径。之后instances
包含当前正在运行的所有firefox实例的句柄。
从这里,我们有三种情况包括:
instances
是一个空数组。这意味着浏览器没有运行。然后你用var processHandle = Process.Start("firefox.exe")
启动浏览器。然后你运行下面的命令行$"firefox.exe -new-tab http://myurl.com/?id={processHandle.Id}"
(希望)能够识别出firefox的一个实例已经在运行,并打开现有实例中的页面。 (执行该命令,也可以用过程来完成,但你必须不启动它来创建一个流程实例,在StartInfo specifing参数并启动它,然后)instances
只包含一个条目。因此,我们所要做的就是运行与案例1相同的命令行:$"firefox.exe -new-tab http://myurl.com/?id={instances[0].Id}"
instances
包含多个条目。这意味着多个firefox窗口打开。我没有解决这个问题。你必须检查-new-tab
选择目标总是相同的窗口或不...
你想传递一个出了在显示网页的网站浏览器的进程ID浏览器实例(会依赖于浏览器)还是想从应用程序中打开网页,然后关闭所有创建的实例? – Michael
@Michael我想要打开这样的网址:http://webpage.com?processId=123123其中processId是标签的URL标识的URL打开。 – karaxuna
@karaxuna int processId = Process.GetCurrentProcess()。Id; –