有没有办法从应用程序完全控制浏览器?

Is there any way to fully control browser from application?

我正在尝试制作一个 pc 应用程序,以便在人们使用浏览器时更方便地帮助他们(例如 Chrome、Firefox、Edge ...)

例如,应用程序显示默认浏览器,让用户可以根据需要选择其他浏览器作为默认浏览器,应用程序显示当前打开的所有 windows;此外,当用户单击特定的 window 时,应用程序将关注 window.

用户可以select默认浏览器

用户可以查看按浏览器类型

分类的所有windows

所以,我最初的计划是使用Election js;但是,我发现无法从 Electron 应用程序控制浏览器,因为 Node js 无法访问用户的系统(这种想法可能是错误的,因为我的英语很差)

经过一些研究,我猜测 C# 可以通过使用 windows api 来做到这一点。我看到这个 post 说通过使用 DDE,我们可以获得标签 url。

但我想知道C#是否可以完全控制浏览器;例如,创建一个新的 window,注意选项卡中是否正在播放音乐或视频,请求浏览器获取收藏夹列表。

如果不能,如何从 pc 应用程序向浏览器请求 api?

您无法完全控制浏览器。 Internet Explorer 是唯一具有记录和支持 API 来控制、检查和自动化的浏览器。 Internet Explorer 已经死了,所以这是一条死胡同。基本的DDE控制界面也已经过时了

访问收藏夹和打开的标签内容受到限制,因为邪恶的人会使用这些 API 进行注入和监视。如果您想访问收藏夹,则必须为每个浏览器编写自定义代码。

使用辅助功能和 UI 自动化 APIs 是与现代浏览器交互的唯一可靠且受支持的方式。 SetWinEventHook 可用于检测 window 创建和原始状态更改。 MSAA/UI 需要使用自动化从每个浏览器获取更多信息 window。

thumbnail APIand/or放大镜API可用于预览图片

要打开新选项卡,请在命令行上使用 URL 执行新进程。可能需要一些 per-browser 自定义(-new-tab 参数等)。

使用IApplicationAssociationRegistration::QueryCurrentDefault检测默认浏览器。