いくつかの画像を処理したい Google Chrome の拡張機能を作成しようとしています。拡張機能は以前は NPAPI を使用して作成されていましたが、段階的に廃止されたため、別の代替手段に切り替える必要があり、ネイティブ メッセージングがこの仕事に最も適しているように見えました。
ネイティブ ホストは C++ で記述されており、拡張機能から送信されたフォーマットされたメッセージ ({action:"name_of_action",buffer:"x0x0",length:"4"} など) を stdin から読み取り、解析し、バッファを抽出して実行します。画像を処理した後、拡張機能にメッセージを返す必要があります。
私が直面している問題は、いくつかのメッセージの後 (番号は毎回同じではありません)、使用されているポートが切断され、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++ からその画像をダウンロードしようとしましたが、失敗したようで、最終的には前のメッセージネイティブ メッセージング ホストと通信中にエラーが発生しました。クロムがメッセージング ホストの実行可能ファイルからファイルをダウンロードできない理由を知っている人はいますか?