从前端javascript中加载的DLL中调用函数(在clientside javascript中加载dll)
我有一个简单的客户端JavaScript应用程序。 我希望它加载DLL文件(对于SwipeReader CR100)并从javascript代码中调用DLL库中的函数。 第二种是向SwipeReader触发的事件添加侦听器,如DocumentRead或DocumentReadError,并在javascript中处理它们。
所以,我有4个小问题需要解决:
- 在javascript(主要是Chrome V8引擎)中加载DLL。
- DLL中的调用函数。
- 将侦听器添加到DLL中触发的事件。
- 在回调中使用响应对象在JS中执行某些操作(alert,console.log数据)
有没有人这样做过,或者这甚至可能吗?
谢谢你,丹尼尔。
我做到了 解决方案是使用EdgeJS作为NodeJS V8和C#CLR之间的桥梁。 Edge加载DLL并在V8和CLR之间创建通信通道,消息是在每个语言VM之间编组的Func
或function(payload, callback)
forms的function(payload, callback)
。
我将在下面发布代码示例:
C#
public abstract class NetWebSocket { private Func
使用Javascript /的NodeJS
(function(e,d,g,e){ var edge = require('edge'), http = require('http'), WebSocketServer = require('ws').Server, swipe = edge.func('./dlls/ActiveXCOM.dll'); var server = http.createServer(function(req,res){ res.writeHead(200, {'Content-Type' : 'text/html'}); res.end(( function () { /* */}).toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1]); }); var wss = new WebSocketServer({server: server}); wss.on('connection', function(ws) { var sendImpl = function (message, callback) { console.log(message); ws.send(message); callback(); }; var receiveHandler = swipe(sendImpl, true); ws.on('message', function (message) { receiveHandler(message); }); ws.on('close', function close(){ console.log('****************************The client disconnected!'); receiveHandler('shutdown'); delete receiveHandler; }); }); server.listen(process.env.PORT || 8080); module.exports = this; })();
我希望实施清楚。 如果您有任何理解,请不要犹豫,写信给我。
快乐的编码!
[别听那些反对者!]
从javascript代码中调用DLL库中的函数。
不能。您无法在JavaScript中加载DLL。
为什么?
JavaScript在浏览器的堆栈中执行。 要使任何可用的东西,您必须使用浏览器连接它,然后使其可访问; 太多的工作。
解决
您可以使用C#编写的客户端应用程序连接到JS websocket,然后传输数据。 WebSocket可以检查特定的数据块,并以您希望的方式处理它。
我按照我在使用指纹扫描仪的项目中描述的方式使用它。 效果很好! 如果你添加一点加密,甚至更好!