从node.js msg调用Windows API
我是新的节点,我有这个简单的Node.js服务器在Windows上工作
服务器代码
var ws = require("websocket-server"); var server = ws.createServer(); server.addListener("connection", function(client){ console.log("new connection"); client.send("aaaaaa"); client.addListener("message", function(msg){ console.log(msg); }); }); server.listen(8080);
我只是想调用windows API insted的行
console.log(msg);
有没有办法做到这一点,而不使用外部库
有任何想法吗?
我认为node-ffi可以帮助你做到这一点。 node-ffi
提供了加载和调用dynamic库的function。 通过node-ffi
你可以访问user32
(例如)lib并从node.js调用它们的函数。
var FFI = require('node-ffi'); function TEXT(text){ return new Buffer(text, 'ucs2').toString('binary'); } var user32 = new FFI.Library('user32', { 'MessageBoxW': [ 'int32', [ 'int32', 'string', 'string', 'int32' ] ] }); var OK_or_Cancel = user32.MessageBoxW( 0, TEXT('I am Node.JS!'), TEXT('Hello, World!'), 1 );
我不想编辑@ Vadim的答案,因为它被接受,但我认为这个包已经被重命名为'ffi'。 这对我工作:
npm install -s ffi
并使用@ Vadim的来源,但更改包名称为ffi
:
var FFI = require('ffi'); function TEXT(text){ return new Buffer(text, 'ucs2').toString('binary'); } var user32 = new FFI.Library('user32', { 'MessageBoxW': [ 'int32', [ 'int32', 'string', 'string', 'int32' ] ] }); var OK_or_Cancel = user32.MessageBoxW( 0, TEXT('I am Node.JS!'), TEXT('Hello, World!'), 1 );