人才市场招聘网站,便宜购物网站大全,公司名字大全最新,可信赖的手机网站设计实现chrome扩展启动本地进程 - 补充 标签#xff1a; chrome扩展启动本地程序访问本地磁盘2014-10-17 11:42 6753人阅读 评论(17) 收藏 举报分类#xff1a;Chrome Plugin版权声明#xff1a;本文为博主原创文章#xff0c;未经博主允许不得转载。 示例 主要包含如下部分 c… 实现chrome扩展启动本地进程 - 补充 标签 chrome扩展启动本地程序访问本地磁盘 2014-10-17 11:42 6753人阅读 评论(17) 收藏 举报 分类 Chrome Plugin 版权声明本文为博主原创文章未经博主允许不得转载。 示例 主要包含如下部分 com.google.chrome.demo-win.json native_cmd.bat manifest.json popup.html popup.js 功能简介 实现一个扩展用户点击一个按钮后会启动本地的notepad程序也可以为自己写的程序这里示例就启动notepad类似迅雷扩展的功能 实现概述 通过启动本地的一个批处理来进而调用启动notepad.exe 拓展 可以将批处理换成自己写的程序然后再在该程序中实现访问本地磁盘数据或者其它事 程序源码在网盘Chrome Plugin目录下的Demo.rar http://pan.baidu.com/s/1hcVuQ 效果图 部分代码 manifest.json [javascript] view plaincopy { // Extension ID: ndnigonbfjhpjlcabmadmkpdcfomenlp manifest_version: 2, name: Invoke Native Application, description: example, version: 1.0, browser_action: { default_icon : icon.png, default_popup: popup.html //定义了点击扩展后显示的页面 }, permissions: [ nativeMessaging //定义权限需要和本地应用程序通信 ] } popup.js [javascript] view plaincopy function updateResult(obj, state){ document.getElementById(obj).innerHTML state; } function invoke(){ //hostName为注册表上项的名称 var hostName com.google.chrome.demo; //启动本地应用程序 var port chrome.runtime.connectNative(hostName); updateResult(result1, invoke..); } //为button1添加监听事件 document.addEventListener(DOMContentLoaded, function() { document.querySelector(#button1).addEventListener( click, invoke); }); com.google.chrome.demo-win.json { name: com.google.chrome.demo, description: Chrome Native Messaging API Example Host, //path 必须是绝对路径指向要启动的程序 path: D:\\Work\\Chrome plugin\\Native Messaging Example\\Demo\\native_cmd.bat, type: stdio, allowed_origins: [ chrome-extension://niekdnkneilndiimkikogmplndpcfknp/ ] } com.google.chrome.demo-win.json [javascript] view plaincopy { name: com.google.chrome.demo, description: Chrome Native Messaging API Example Host, //path 必须是绝对路径指向要启动的程序 path: D:\\Work\\Chrome plugin\\Native Messaging Example\\Demo\\native_cmd.bat, type: stdio, allowed_origins: [ chrome-extension://niekdnkneilndiimkikogmplndpcfknp/ ] } native_cmd.bat notepad.exe 我的注册表导出的值位置要注意下HEKY.. Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts\com.google.chrome.demo]D:\\Work\\Chrome plugin\\Native Messaging Example\\Demo\\com.google.chrome.demo-win.json 2016.2.15 补充 之前有博友私信我关于不能启动的问题这里是我疏忽了一个挺重要的步骤就是权限问题。 在allowed_origins下的chrome-extension表示允许的插件。这串字母很重要要和你安装的ID一致。如下这个插件为hnaekmhaniojodkaageacnjfldljhiek那么相对于安装的ID也是必须一致。 [javascript] view plaincopy allowed_origins: [ chrome-extension://hnaekmhaniojodkaageacnjfldljhiek/ ] 这里涉及了插件打包的问题顺便也提一下。 如下选择打包扩展程序其中根目录为插件所在位置这样打包后会生成两个文件一个pem密钥文件另一个为crx安装程序。安装后可以看到插件的ID然后复制下来到填上再将crx安装程序删除重新来打包一次但是这一次下面的私有密钥文件要选择刚刚生成的。这样ID就对应了。 补充实现的由来 这里对于当时我接到要写一个chrome插件任务的时候那时候首次接触插件的时候解决思路是先收集资料然后确定采用Native Messaging方式来实现时就查看相关文档以及官方Demo然后再研究迅雷的插件看看迅雷是如何调用起来的不是研究源码是看怎么关联起来的如注册表这个过程并不需要花多少时间一周左右的时间。 转载于:https://www.cnblogs.com/developer-ios/p/6057967.html