我需要创建一个Chrome扩展程序,除其他外,需要调用本机Windows应用程序来获取一些数据,特别是IP地址和Citrix用户ID(显然在Citrix上)。目前,我无法打开扩展程序中的端口,我只是在本地执行此操作,在Windows 10上,没有Citrix。
我的监听器清单文件是:
{
"name": "com.q.userid",
"description": "My Application",
"path": "C:\\Temp\\NativeMessageHost.exe",
"type": "stdio",
"allowed_origins": [
"chrome-extension://mbodcbioidcfdfhjgekeppinibhhnnmh/"
]
}
为了简单/测试,我的扩展程序使用浏览器操作,弹出一个文本框,然后在onKeyUp中调用我的本机应用程序。我的JS如下:
$(function() {
$('#name').keyup(function(){
var port;
port = chrome.runtime.connectNative('userid');
console.log(port);
port.onMessage.addListener(function(msg) {
console.log('Received: ' + msg);
});
port.onDisconnect.addListener(function() {
console.log("Disconnected");
});
port.postMessage({text: "hello"});
});
});
扩展程序的我的清单文件是:
{
"manifest_version": 2,
"name": "Hello World",
"description": "Hello World",
"version": "1.1",
"browser_action": {
"default_icon": "icon.png",
"default_title": "Hello World",
"default_popup": "popup.html"
},
"permissions": [
"nativeMessaging"
]
}
当我触发代码时,我得到了一个输出 港口 {} 断开连接
"断开"是立即。
从Windows任务管理器,我没有看到exe启动。
在扩展程序的控制台中我过去了
port = chrome.runtime.connectNative('userid');
然后我粘贴
port.postMessage({text: "hello"});
这会产生未被捕获的错误:请注意使用断开连接的端口。
我添加了注册表项: HKEY_CURRENT_USER->软件 - > Google-> CHROME-> NativeMessagingHosts-> com.q.userid
默认值:c:\ temp \ manifest.json
我也试过了 默认值:c:\ temp \ manifest.json
chrome日志声明无法找到userid
的清单文件有任何想法或建议吗?
提前致谢。