如何使用C#与Chrome(Chrome扩展)通信?
我想创建一个可以在我的C#应用程序和扩展之间通信的桥梁。如何使用C#与Chrome(Chrome扩展)通信?,c#,google-chrome,communication,C#,Google Chrome,Communication,我想创建一个可以在我的C#应用程序和扩展之间通信的桥梁。 以下是我真正想要的解释: 我已经创建了一个扩展,它将获取HTML元素的详细信息。 但每次我启动Chrome时都会启动。除了这样做,还有什么方法可以将消息发送到我的chrome扩展以获取HTML元素的详细信息,然后将其发送回C#应用程序 我能够使用“XMLHttpRequest”将信息传递给C#,但问题是,它是在我的页面加载时启动的 让我向你解释我想要什么: 当我打开我的chrome浏览器时,我的扩展将自动启动,我的background.c
以下是我真正想要的解释: 我已经创建了一个扩展,它将获取HTML元素的详细信息。
但每次我启动Chrome时都会启动。除了这样做,还有什么方法可以将消息发送到我的chrome扩展以获取HTML元素的详细信息,然后将其发送回C#应用程序 我能够使用“XMLHttpRequest”将信息传递给C#,但问题是,它是在我的页面加载时启动的 让我向你解释我想要什么:
我知道我需要将数据发送回C#的其余部分,但我只在这一阶段遇到了困难——如何将数据从C#发送到我的扩展(背景页)。如果你在调试模式下启动chrome,然后通过指定端口连接到它,你可能可以做到这一点,但这有点麻烦
你可以试着研究Adobe括号是如何做到这一点的,但我觉得这是同样的方法。大多数google chrome扩展都是用HTML、CSS或Javascript编写的。然后,将扩展目录绑定到
.crx
Chrome扩展文件中,只需运行一个短程序即可。但是,C#可以翻译成Javascript,您可以为扩展编写自己的业务逻辑。看看嗯……可能有更好的方法,但一个简单的方法可能是在你的c#应用程序中打开一个应用程序,并通过如下扩展与之通信:
var listener = "http://localhost:60024/";
function getCommand(){
var postData = {
"action": "getCommand"
};
$.post( listener, postData, function(response){
//Parse response and do whatever c# wants
});
}
function send(data){
var postData = {
"action" : "send",
"data": data
};
$.post(listener, postData);
}
setInterval(getCommand, 1000);
在这个示例中,我使用jQuery.post,它可以添加到扩展上下文中,但是如果您更喜欢,可以使用XMLHttpRequest。在c#端:
在ProcessRequest函数中,您可以读取post数据或发送返回的内容
获取post数据:
string postData;
using (var reader = new StreamReader(request.InputStream, request.ContentEncoding))
{
postData = reader.ReadToEnd();
//use your favourite json parser here
}
并寄回一些带有:
string responseString = "This could be json to be parsed by the extension";
HttpListenerResponse response = context.Response;
response.ContentType = "text/html";
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
response.ContentLength64 = buffer.Length;
Stream output = response.OutputStream;
output.Write(buffer, 0, buffer.Length);
output.Close();
只是一些快速的头脑风暴,期待更好的想法:)不是这样的,我想创建一个自动工具,可以记录某些html事件,如填写表单和播放。我用C语言为Internet explorer编写了所有内容,但对于Chrome,我真的没有任何选择如何做到这一点?你能给我更多关于它的信息吗,因为我对这一点非常陌生?基本上,在我给你的链接中,你会找到关于如何在特定端口上以调试模式启动Chrome的信息。有了这些信息,您就可以打开http:\\localhost:或该端口的套接字,这样您就可以与chrome直接链接。我不知道你如何访问扩展,但是打开的页面和类似的东西你可以。关于如何做到这一点的更多信息,你可以在Chrome的支持论坛上找到,因为它与C#setInterval无关(民意调查,1000);将其更改为中性设置间隔(getCommand,1000),@povilasp。干杯:)你能给我举个例子吗?求你了,因为我对这个很陌生。@SanketShah,上面的代码已经是一个完全有效的例子了。只需创建一个扩展名,或者使用现有的扩展名并将js代码粘贴到一个文件中。c#部分也是如此,它是一个可以工作的控制台应用程序。或者,您可以简单地粘贴代码,在应用程序中启动HttpListener和回调函数,这非常简单。
string responseString = "This could be json to be parsed by the extension";
HttpListenerResponse response = context.Response;
response.ContentType = "text/html";
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
response.ContentLength64 = buffer.Length;
Stream output = response.OutputStream;
output.Write(buffer, 0, buffer.Length);
output.Close();