如何使用NativeMessaging连接到本机应用程序(.exe),但不启动.exe,只需发送消息背景

时间:2016-12-15 02:51:11

标签: javascript google-chrome google-chrome-extension chrome-native-messaging nativeapplication

当我点击“发送”按钮(盲目使用NativeMessaging方法)时,它会启动一个新实例,我只想让它只有一个连接正常运行的实例,我可以发送消息可持续发送。 非常感谢!

这是我的 background.js 代码:

<p>
<img src="images/spaghetti.jpg" alt="spaghetti" name="Spaghetti" />

Spaghetti <input type="radio" name="demo" value="spaghetti" checked
           onclick="image.src='images/spaghetti.jpg'"/> <br>
Salade <input type="radio" name="demo" value="salade"
           onclick="image.src='images/salade.jpg'"/> <br>
Cr&egrave;me glac&eacute;e <input type="radio" name="demo" value="cremeglacee"
           onclick="image.src='images/cremeglacee.jpg'"/> <br> <br>
</p>

这是我的 content.js 代码:

var port = null;
console.log("visited test!");
chrome.runtime.onMessage.addListener(
function (request, sender, sendResponse) {
    if (request.type == "launch") {
        console.log("visited 333!");
        connectToNativeHost(request.message);
    }
    return true;
});
// chrome.runtime.onMessage.addListener(function(msg) {
//     console.log("Received" + msg.text);
// });

//onNativeDisconnect  
function onDisconnected() {
console.log(chrome.runtime.lastError);
console.log('disconnected from native app.');
port = null;
}

function onNativeMessage(message) {
    console.log('recieved message from native app: ' +JSON.stringify(message));
}

//connect to native host and get the communicatetion port  
function connectToNativeHost(msg) {
    var nativeHostName = "com.example.test";
    // console.log(typeof(nativeHostName));
    // console.log(nativeHostName);
    //port = chrome.runtime.connectNative(nativeHostName);
    port = chrome.runtime.sendNativeMessage(nativeHostName,{ message: msg });
    port.onMessage.addListener(onNativeMessage); 
    port.onDisconnect.addListener(onDisconnected);
    port.postMessage({ message: msg });
}   

这是我的测试HTML文件代码:

var launch_message;
document.addEventListener('myCustomEvent', function (evt) {
console.log("visited!");
chrome.runtime.sendMessage({ type: "launch", message: evt.detail }, function (response) {
    console.log(response);
    // console.log("visited here!");
});
}, false);

我使用C#语言编写演示本机应用程序。

0 个答案:

没有答案