我的例子与此类似:
Process.Start("http://www.webpage.com?processId=");
如何在流程开始前获取流程ID?或者我可以将一些Guid设置为另一个将持续存在的标识符吗?
答案 0 :(得分:6)
Process p = Process.Start("cmd.exe");
int processId = p.Id;
答案 1 :(得分:0)
未经过测试
我认为你应该尝试以下方法:
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的一个实例已在运行,并打开现有实例中的页面。 (执行此命令也可以使用Process完成,但是您必须创建一个Process实例而不启动它,在StartInfo中指定参数然后启动它)
instances
只包含一个条目。因此,我们所要做的就是运行与案例一相同的命令行:$"firefox.exe -new-tab http://myurl.com/?id={instances[0].Id}"
instances
包含多个条目。这意味着多个firefox-windows是开放的。我没有解决方案。你必须检查-new-tab
选项是否总是在同一个窗口...