真的,我有 3 个问题,但它们都很简单(一次):
Firefox 中的附加组件可以查看是否有多个 Firefox 实例/Firefox 进程正在运行?
由于运行多个 Firefox 实例的唯一方法(至少在 Windows 中)是让它们在不同的配置文件下运行,附加组件是否可以确定其他实例在哪些配置文件下运行?
附加组件可以与其他进程交互吗?具体来说,它是否可以执行诸如关闭其他进程或告诉它打开一个带有在加载项进程中指定的 URL 的新窗口之类的操作?
真的,我有 3 个问题,但它们都很简单(一次):
Firefox 中的附加组件可以查看是否有多个 Firefox 实例/Firefox 进程正在运行?
由于运行多个 Firefox 实例的唯一方法(至少在 Windows 中)是让它们在不同的配置文件下运行,附加组件是否可以确定其他实例在哪些配置文件下运行?
附加组件可以与其他进程交互吗?具体来说,它是否可以执行诸如关闭其他进程或告诉它打开一个带有在加载项进程中指定的 URL 的新窗口之类的操作?
间接:Firefox 不允许在同一个配置文件上运行多个实例。由于您的插件是配置文件的一部分,因此“您的”Firefox(运行插件的那个)是独一无二的。
可能不是。个人资料信息与安全相关,Firefox 不会轻易将其分发出去。这就是使用随机前缀创建配置文件名称的原因之一。
Firefox 监听远程命令(这是新进程告诉现有 FF 打开新 URL 的方式),因此可以打开更多窗口。不知道有没有远程命令终止FF。
注意:如果您开始关闭其他窗口并通过加载广告来惹恼人们,他们会讨厌您。禁用和卸载不需要的插件只需几秒钟。如果你试图阻止用户卸载你的插件,他们会非常讨厌你。可能涉及干草叉或焦油和羽毛。;)
附加组件(或“Mozilla 应用程序”)可以做任何事情,因为它可以包含二进制组件。如果您要从 JS 中使用现有的 API,我认为现在没有。
如果您愿意在所有配置文件中安装插件,则实例 #1 中的插件可以使用任何 IPC 机制与实例 #2 中的插件通信,例如套接字(仅可从 JS 使用)添加在)。