5

Windows コンソール アプリケーションと、双方向通信を行おうとしているクロム パッケージ アプリがあります。彼らがpythonアプリで持っている例に従いましたが、運がありませんでした。

次の手順を実行しました。

  1. HKEY_LOCAL_MACHINE\SOFTWARE\Google\NativeMessagingHosts: my.app.name : c:\path\to\my.app.name.json のレジストリにこのエントリを作成しました

  2. その場所に json ファイルを作成しました: { "name": "my.app.name", "description": "Chrome Native Messaging API", "path": "c:\path\to\my.app .name\consoleApp.exe", "type": "stdio", "allowed_origins": [ "chrome-extension://offmjeicniagcebcbclkdlkllfibllfh/" ] }

  3. パッケージ化されたアプリ スクリプトに以下を追加しました。

    function connect() {
     var hostName = "my.app.name";
     appendMessage("Connecting to native messaging host <b>" + hostName + "</b>")
     port = chrome.runtime.connectNative(hostName);
     port.onMessage.addListener(onNativeMessage);
     port.onDisconnect.addListener(onDisconnected);        
    }
    
    function appendMessage(text) {
     document.getElementById('messages').innerHTML += "<p>" + text + "</p>";
    }
    
    function onNativeMessage(message) {
      appendMessage("Received message: <b>" + message + "</b>");
    }
    
    function onDisconnected() {
     appendMessage("Failed to connect: " + chrome.runtime.lastError.message);
     port = null;
    }
    

接続機能を呼び出すボタンをクリックすると、次のエラーが発生します。

「無効なネイティブ メッセージング ホスト名が指定されました」

考えられるあらゆる方法でこれを試してみましたが、ドキュメントやサンプル コードはほとんどありません (ほとんどありません)。誰にもアイデアはありますか?

ありがとう

4

2 に答える 2

3

うまくいきました!「パス」を「consoleApp.exe」に変更して(以前のすべての提案を含む)、アプリをアプリのマニフェストと同じフォルダーに配置してみてください。次に、タスクマネージャーを確認すると、プロセスが機能していることがわかります。幸運を。

于 2013-10-19T13:44:12.037 に答える
0

最初は、"Google" と "NativeMessagingHosts" の間のレジストリ パスに "Chrome" がありませんでした。そして、私が理解したように、 my.app.name はキーである必要がありますが、値ではありません。とにかく、それは私にとっては役に立ちませんでした:( x64およびx86レジストリキーにも同じキーを作成しました。

于 2013-10-19T06:23:05.190 に答える