从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 );