Create a node.js native extension on Windows

Timothy Armstrong picture Timothy Armstrong · Mar 8, 2012 · Viewed 10k times · Source

I'm trying to access a particular native Windows API call from within a node.js application. I believe that the best way to do this is to create a native extension / addon to node that I can require in my node.js application and call from the JavaScript.

Where can I find resources on how to actually compile this sort of executable? I can find instructions on how to write it, but all the build instructions seem to be for Linux. I'm fine with compiling through g++ on mingw, I don't need to use Visual Studio. Also, where do I find the header files that I need in order to compile the extension?

Answer

Vadim Baryshev picture Vadim Baryshev · Mar 8, 2012

I think node-ffi will help you. It's simple and it's works.

npm install 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
);