Call Windows API from node.js msg

Call Windows API from node.js msg

本文关键字:js msg node from Windows API Call      更新时间:2023-09-26

我是Node的新手,我有这个简单的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而不是行

console.log(msg);
有没有办法在不使用外部库 的情况下做到这一点?

任何想法?

我认为node-ffi可以帮助您做到这一点。node-ffi提供了加载和调用动态库的功能。使用node-ffi,您可以访问user32(例如)库并从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
);

你也可以使用这个NPM包,它已经进入了(大部分)Win32 API(使用ffi)并准备从NodeJS使用:https://github.com/waitingsong/node-win32-api