【问题标题】:Launching Chrome Extension from an External C# Program从外部 C# 程序启动 Chrome 扩展程序
【发布时间】:2013-05-31 01:21:56
【问题描述】:

我正在尝试从外部 c# 程序启动 chrome 扩展。

到目前为止我所拥有的:

扩展完成并在单击扩展按钮时启动。 该程序通过 Process.GetProcessesByName 搜索可用的 chrome 浏览器。 完成后,它会使用 Ui-Automation dll 搜索 chrome 扩展按钮。

我能够向下钻取并找到该按钮,但它没有 Invoke 模式或任何与此相关的模式,即使控件类型是按钮。

目标:

我让用户绑定一个热键以用作他们的媒体键,而不是按 fn+MediaKey。 我还希望该程序影响扩展中的 javascript 处理的 youtube 视频。它暂停所有正在播放的视频,并播放所有暂停的视频。我认为编写扩展程序并调用单击就可以了,但 chrome 工具栏按钮似乎都没有响应 Invoke 操作。

如果能帮我指出正确的方向,我将不胜感激。

【问题讨论】:

    标签: c# google-chrome google-chrome-extension ui-automation


    【解决方案1】:

    我可以指出一些方法来做到这一点,但无论如何它都会被视为一个安全问题。例如,您可以使用 registerProtocolHandler 在自定义 URI 下的应用程序和扩展程序之间传递消息,但它是 being discussed as an vulnerability 并且很快就会受到限制。

    恐怕没有办法为 chrome 扩展程序带来这种功能,除非你使用 NPAPI Plugin 并让其中一个非常痛苦。

    我能想到的最佳解决方案是让您的应用程序重新映射Commands API 支持的某些快捷方式的媒体键。

    祝你好运!

    【讨论】:

    • 好的,我会尝试使用 Commands API 看看是否可以发送窗口消息。没有任何方法可以与外部扩展进行通信,这真是令人遗憾。