gpt4 book ai didi

c# - 从 C# 启动和停止 Firefox

转载 作者:太空狗 更新时间:2023-10-29 23:35:24 25 4
gpt4 key购买 nike

当我开始

/Applications/Firefox.app/Contents/MacOS/firefox-bin

在 MacOSX 上使用 Process.Start() 和 Mono,返回的进程 ID 与 firefox 最终运行的进程不匹配。

看起来 firefox 很快决定启动另一个进程,并杀死当前进程。

这使得停止 firefox 和检测它是否仍在运行变得困难。我尝试使用 -no-remote 标志启动 firefox,但无济于事。

有没有办法以这样一种方式启动 firefox,它不会执行“我会很快为你创建一个新进程”的舞蹈?

通过确保 Firefox 在启动后至少持续运行 3 秒,可以在某种程度上检测到这种情况,如果没有,则扫描其他 firefox 进程。然而,这种技术充其量是不稳定的,因为在缓慢的日子里它可能需要 3 秒多一点,然后所有依赖于这种行为的测试都会失败。

事实证明,只有在要求 firefox 使用 -P MyProfile 启动特定配置文件时才会发生此行为。 (我需要这样做,因为我需要使用特定的代理服务器设置启动 firefox)如果我“正常”启动 firefox,它会坚持其进程。

最佳答案

当以编程方式使用 mozilla 或嵌入其他应用程序时,您应该使用提供的组件:

mozilla 推荐的“正确方法”...

https://developer.mozilla.org/en/XPCOM

“最简单的方法”,Mozilla 开发人员的普遍共识......

http://www.iol.ie/~locka/mozilla/control.htm

需要“执行进程”,只需实例化一个组件实例并与之对话,然后您应该拥有所需的一切。

然而……

如果你真的坚持要照顾 firefox 实例的实际过程,你可能想调用

Process.Start("...\firefox.exe");

然后试试这个(我相信这也适用于 MAC OS)...

C#/mono: get list of child processes on Windows and Linux

基本的想法/思维模式是,如果它实际上正在立即执行另一个进程,您应该能够找到它作为一个“子”进程,而不是只是“任务列表”中列表中的一个/机器的进程管理器。

关于c# - 从 C# 启动和停止 Firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2341361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com