Coder Social home page Coder Social logo

jsinvokedll's Introduction

如何用js直接调用c/c++编写的dll

最近在调研如何用js直接调用c/c++编写的dll,根据浏览器的差异,使用的技术也不相同。最简单的是利用IE内置插件ActiveX(具体代码已上传),js 可以通过new ActiveXObject()直接获取dll,但是我在IE浏览器上调取的时候首先提示我

Internet Explorer 已限制此网页运行 脚本或 ActiveX 控件

这个问题可以通过将控件注册为安全控件避免以上窗口,我点击允许后又报了

Automation服务器不能创建对象的错误

其原因有一、组件未注册,可以采用以下方法:

1 将DLLTest.dll方到C:\Windows\System32下面(如果是64位系统机子,需要放到C:\Windows\SysWoW64下面)
2 用管理员身份打开命令行界面,将目录切换到放置DLLTest.dll的目录(我的机子是C:\Windows\SysWoW64) 运行 regsvr32 DLLTest.dll

如果你是win10系统可以尝试《Win10注册DLL办法》里的方法注册dll文件

然后成功调取dll文件里的方法返回“hello world”

为了兼容更多浏览器,我又了解到(NPAPI、PPAPI)等非IE浏览器插件,前者很多银行已经支持NPAPI版本的安全控件,但NPAPI 却做为不安全因素被主流浏览器(Chrome、FireFox)抛弃。后者Chrome提出的名叫PPAPI的全新插件机制,运行在Chrome浏览器的沙箱环境。

目前这三种方式的兼容性如下

  • ActiveX仅支持除了微软新出的Edge浏览器之外的所有IE浏览器
  • NPAPI支持360浏览器、chrome42版本以下、Opera、Firefox等浏览器,但它已经停止维护和更新了
  • PPAPI支持chrome42版本或以上

要开发NPAPI或PPAPI插件,还需了解一些底层语言,具体如何实现,我还在研究中,欢迎给予帮助,提出不同观点!

参考:
JavaScript调用dll的公用方法
制作供js调用的dll并调用
PPAPI插件开发指南

jsinvokedll's People

Stargazers

Jalon avatar Ebony avatar

Watchers

James Cloos avatar Ebony avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.