我正在尝试为 Google Chrome 创建一个扩展程序,我想在其中处理一些图像。该扩展以前是使用 NPAPI 创建的,但是被逐步淘汰需要切换到另一个替代方案,Native Messaging 看起来最适合这项工作。
本机主机是用 C++ 编写的,它从标准输入读取从扩展发送的格式化消息(有些像 {action:"name_of_action",buffer:"x0x0",length:"4"} ),解析它,提取缓冲区并执行对图像进行一些处理,之后我需要向扩展返回一条消息。
我面临的问题是,在几条消息之后(每次的数字都不一样),使用的端口断开连接,并且在 javascript 控制台中消息是:与本机消息传递主机通信时出错。.
我的应用程序基本上是这样做的:
while(true)
{
/*read until I reach a delimiter*/
while(true){
c = getchar();
buffer[i] = c;
if(i>len && memcmp(buffer+i-len+1,delimiter,len)==0)
break;
i++;
}
ProcessMessage(buffer);
}
我正在从扩展(base64 编码)发送图像缓冲区,解码它们并在应用程序中处理该缓冲区。我也尝试(在 Windows 上)使用 UrlDownloadToFile 函数从 C++ 下载该图像,但这似乎失败了,最终上一条消息与本机消息传递主机通信时出错。有人知道为什么 chrome 不允许从消息传递主机可执行文件下载文件吗?