.NET 应用程序与 Google Chrome 扩展程序的交互

     2023-02-16     236

关键词:

【中文标题】.NET 应用程序与 Google Chrome 扩展程序的交互【英文标题】:Interaction from .NET application with a Google Chrome extension 【发布时间】:2014-03-25 13:30:33 【问题描述】:

我有一个关于浏览器远程控制的问题。我的主要目标是从谷歌浏览器中读出所有打开的标签 URL,如果找到匹配的 URL 并重新加载当前页面,则还聚焦一个标签。所有这些东西都是从本机应用程序调用的(而不是从 Chrome 到本机应用程序。

目前,我尝试使用 Win32-API 的东西(FindWindowEx,...),新的 .NET 自动化的东西,但这只会给我任何东西(前者)或只有当前选项卡的 URL(后者)。

所以我认为 - 基于研究 - 编写一个 Google Chrome 扩展程序并以这种方式进行交互是最好的主意。可悲的是:不再支持 NPAPI 扩展,现在只支持 JavaScript 类的东西。

然后我尝试使用 nativeMessaging 进行通信,但我无法让事情正常工作(永远不会以某种方式执行)并且关于此的文档部分是 -censored-。

这让我想到事情是否可能,如果是,它们怎么可能?

宿主应用程序,在注册表中注册(Windows):

public static void Main(string[] args)

    string message = "\"text\": \"My response\"";
    byte[] length = BitConverter.GetBytes(message.Length);
    foreach (byte b in length)
    
        Console.Write((char)b);
    
    Console.Write(message);

主机应用程序清单


  "name": "My.ChromeHost",
  "description": "This extension is used for browser interaction with My App.",
  "version": "1.0",
  "path": "C:\\Program Files (x86)\\My Company AG\\My Product\\My.ChromeHost.exe",
  "type": "stdio",
  "allowed_origins": [
    "chrome-extension://bejoalmncckddamdhnfjafipbgflolmk"
  ]

扩展清单


  "manifest_version": 2,
  "name": "My App",
  "description": "This extension is used for browser interaction with My App.",
  "version": "1.0",
  "background": 
    "scripts": [
        "background.js"
    ],
    "persistent": false
  ,
  "permissions": [
    "tabs",
    "nativeMessaging"
  ]

background.js

// sending a message to the app (altough I need it vice versa)
var port = chrome.runtime.connectNative("My.ChromeHost");
port.onMessage.addListener(onNativeMessage);
port.onDisconnect.addListener(onDisconnected);
port.postMessage( "text": "My request" );

function onNativeMessage(message) 
    alert("Received message: <b>" + JSON.stringify(message) + "</b>");


function onDisconnected() 
    alert("Failed to connect: " + chrome.runtime.lastError.message);
    port = null;

【问题讨论】:

这方面有什么进展吗?我正在尝试相同的方法,遵循somewhat limited documentation。想知道是注册表设置不正确,还是manifest,或者app无法调用。很不清楚它无法连接的“哪里”。 一些relevant info on Chromium extensions Google Groups。 @StevenJeuris 是的,也不是。我设法建立了与我的本机应用程序的连接,但没有使用本机消息传递。我切换到 SignalR 进行通信。自托管 SignalR 主机正在我的应用程序中运行,扩展程序充当客户端,一旦启动就会注册。然后,IPC 可以从双方进行,这足以满足我的要求。 我可能最终也会这样做。我猜你在那种情况下使用了背景页面而不是event page? @StevenJeuris 正确,我使用的是背景页面。如果你也一样,我可以分享我的东西。 【参考方案1】:

我设法建立了与我的本机应用程序的连接,但没有使用本机消息传递。我切换到 SignalR 进行通信。自托管 SignalR 主机正在我的应用程序中运行,扩展程序充当客户端,一旦启动就会注册。然后,IPC 可以从双方进行,这足以满足我的要求。

更新:根据要求,此处提供了一个小型示例应用程序:

http://tooldesign.ch/pub/SignalRChrome.zip

有关如何开发、打包和分发 Chrome 扩展程序的信息,请查看https://developer.chrome.com/extensions。由于私钥,这不包含在我的示例项目中。

【讨论】:

嘿,你能不能把你的项目压缩并发布到这里?我正在寻找与您所做的类似的事情,并想修改您的项目,看看它是否可以做我想做的事情? 我不允许上传原始项目,但我可以根据它制作一个示例应用程序。 感谢您这样做。有没有办法绕过你可以发送和接收多少的限制?它告诉我长度太大而无法发送。 我从来没有收到过这么大的消息,但是您是否在扩展程序或服务器中收到错误? 服务器页面说请求字符串太大。

XBAP 应用程序,这些可以在 Google Chrome 中运行吗?

】XBAP应用程序,这些可以在GoogleChrome中运行吗?【英文标题】:XBAPApplication,cantheseworkinGoogleChrome?【发布时间】:2010-09-0915:40:36【问题描述】:我正在开发一个.NET3.5XBAP应用程序,它在FF3和IE6/7等中运行得非常好。我只是想知道是... 查看详情

C++ 中的 Google ProtoBuf 与 C# (UDP) 中的 Protobuf-net 聊天

...问题。我有一个使用Google的Protobuf在C++上的服务器/客户端应用程序。效果很好。客户端将数据发送到应分发此消息的服务 查看详情

Google Apps Script Web App 从 Chrome 扩展程序接收消息

...205:47:28【问题描述】:我正在开发一个基于AppScript的网络应用程序(以使用GoogleAPI)。我有一个与网络应用程序一起工作的chrome扩展程序,以便我可以发送有关浏览器的信息。我正在使 查看详情

最新版本的 Safari(Windows)与 Safari(MAC)、Google Chrome(Mac)与 Google Chrome(Windows)之间的渲染差异是啥?

】最新版本的Safari(Windows)与Safari(MAC)、GoogleChrome(Mac)与GoogleChrome(Windows)之间的渲染差异是啥?【英文标题】:WhatarerenderingdifferencesbetweenlatestversionsofSafari(windows)vsSafari(MAc)vsGoogleChrome(Mac)vsGoogleChrome(Windows)?最新版本的Safa 查看详情

带有 Chrome 扩展的 Google 日历 API

】带有Chrome扩展的Google日历API【英文标题】:GoogleCalendarAPIwithChromeExtension【发布时间】:2022-01-1110:21:01【问题描述】:我正在尝试构建一个与Google日历API交互的Chrome扩展程序,以便将事件添加到我的日历中。我或多或少遵循here... 查看详情

基于chrome内核的.net开发资源

...心,看起来不错,但我没有深入研究这个东西。http://www.google.com/chromeframe?hl=zh-CN&quickenable=truehttps://developers.google.com/chrome/chrome-frame/WebKit.Net  已经有一段时间没人更新这个开源项目了,没有研究过  h 查看详情

无法加载资源:net::ERR_CONNECTION_RESET 与 Apache 2.4 和 Chrome

...问题描述】:我在使用Apache2.4(mod_jk)的反向代理后面使用应用程序。当我请求某个页面时,它需要很长时间才能加载,并且最终根本 查看详情

如何使用 C# 启动具有特定 URL 的 Google Chrome 选项卡

...在GoogleChrome中启动一个标签(不是新窗口),并从自定义应用程序加载特定的URL?我的应用程序是用C#(.NET4Full)编码的。我正在通过C#中的SOAP执行一些操作, 查看详情

我使用 Google chrome 加载资源失败:net::ERR_BLOCKED_BY_CLIENT

】我使用Googlechrome加载资源失败:net::ERR_BLOCKED_BY_CLIENT【英文标题】:IamgettingFailedtoloadresource:net::ERR_BLOCKED_BY_CLIENTwithGooglechrome【发布时间】:2014-04-1414:46:55【问题描述】:我在运行我的项目后得到白页,但它可以正常使用.net客... 查看详情

无法与 Internet Explorer 一起使用的 Web 应用程序的 Google 登录

】无法与InternetExplorer一起使用的Web应用程序的Google登录【英文标题】:GoogleSignInforWebAppsnotworkingwithInternetExplorer【发布时间】:2015-10-0806:14:08【问题描述】:使用Google提供的quickstartsample,我已经能够让Web应用程序登录以在Chrome和... 查看详情

我可以通过 Google Chrome 扩展程序以编程方式打开 devtools 吗?

】我可以通过GoogleChrome扩展程序以编程方式打开devtools吗?【英文标题】:CanIprogrammaticallyopenthedevtoolsfromaGoogleChromeextension?【发布时间】:2011-10-1117:00:51【问题描述】:我有一个与devtools挂钩的chrome扩展程序。理想情况下,我想要... 查看详情

在 Google Chrome 浏览器中使用 Angular 7 和 ASP.Net Core 2.2 的 ERR_INVALID_HTTP_RESPONSE

...ser【发布时间】:2019-05-2419:42:21【问题描述】:我有一个应用程序,它使用Angular7作为前端,使用ASP.NetCo 查看详情

将 Google 身份验证令牌与 Firebase 一起使用

...发布时间】:2016-03-0117:21:51【问题描述】:我有一个.NET应用程序(不是网络应用程序),其中用户已通过Google授权进行身份验证,因此已颁发令牌。我希望此应用使用以下类型的用户读写安全规则将用户数据存储到Firebase:“$us... 查看详情

如何在 Chrome 应用程序的 Google Chrome 中隐藏地址栏?

】如何在Chrome应用程序的GoogleChrome中隐藏地址栏?【英文标题】:HowdoyouhidetheAddressbarinGoogleChromeforChromeApps?【发布时间】:2013-04-1401:01:21【问题描述】:我想为我的Chrome应用增加屏幕空间。地址栏在Chrome应用程序中没有用,我想... 查看详情

在 chrome 扩展中使用频道 google 应用引擎

】在chrome扩展中使用频道google应用引擎【英文标题】:usingthechannelgoogleappenginefromwithinachromeextension【发布时间】:2012-01-0620:09:41【问题描述】:这是在扩展程序中运行的代码,在background.html中。functiononLoad()varpath="http://localhost:8082... 查看详情

将 Chrome 打包应用程序链接到 Google Play 游戏

】将Chrome打包应用程序链接到GooglePlay游戏【英文标题】:LinkingaChromePackagedApptoGooglePlayGames【发布时间】:2014-08-1208:53:13【问题描述】:我正在开发一款作为Chrome打包应用程序的游戏,我想使用GooglePlay游戏作为排行榜,但它正在... 查看详情

如何解决“未找到证书 - Chrome 应用程序已请求证书”Android / Google Chrome 问题

】如何解决“未找到证书-Chrome应用程序已请求证书”Android/GoogleChrome问题【英文标题】:HowcanIfixthe"Nocertificatesfound-TheappChromehasrequestedacertificate"Android/GoogleChromeissue【发布时间】:2016-08-2814:17:45【问题描述】:问题我们的... 查看详情

在 Chrome 扩展程序中使用 Google 帐户进行服务器端身份验证

...【发布时间】:2018-11-0506:20:54【问题描述】:我有一个Web应用程序,它当前使用OAuth2来验证使用其Google帐户的用户。流程非常标准:用户登录Google,Web应用获取回调,检索用户身份并将其存储在会话中。现 查看详情