Node-ffi Window 列表

Node-ffi Window List

我希望能够使用 Node-ffi 获取 Windows OS 中所有当前打开的 windows/programs 的列表,大概是 EnumWindows 来自 User32.dll 或类似的东西。我希望能够获得句柄,例如来自 User32 中的 'FindWindowW',以及进程名称的字符串,所以我知道它是什么。

多亏了好心人,我已经 'FindWindowW' 开始工作并且知道 this question 关于 EnumWindows,但我就是无法使该解决方案起作用, 总是在 node_modules\ffi\lib_foreign_function.js:59

中得到 Uncaught ReferenceError: libm is not defined

谢谢,非常感谢您的帮助。

好吧,最终我像这样用 EnumWindows 解决了这个问题:

var ref = require('ref');
var ffi = require('ffi');

var voidPtr = ref.refType(ref.types.void);
var stringPtr = ref.refType(ref.types.CString);

var user32 = ffi.Library('user32.dll', {
    EnumWindows: ['bool', [voidPtr, 'int32']],
    GetWindowTextA : ['long', ['long', stringPtr, 'long']]
});

windowProc = ffi.Callback('bool', ['long', 'int32'], function(hwnd, lParam) {
  var buf, name, ret;
  buf = new Buffer(255);
  ret = user32.GetWindowTextA(hwnd, buf, 255);
  name = ref.readCString(buf, 0);
  console.log(name);
  return true;
});

user32.EnumWindows(windowProc, 0);