节点 ffi 窗口列表



我希望能够使用Node-ffi来获取Windows操作系统中所有当前打开的窗口/程序的列表,大概是User32的EnumWindows.dll或类似的东西。我希望能够获得一个句柄,例如来自 User32 中的"FindWindowW",以及一串进程名称,所以我知道它是哪个。

感谢一些善良的灵魂,我让"FindWindowW"工作并知道有关 EnumWindows 的这个问题,但我就是无法让该解决方案工作,总是Uncaught ReferenceError: libm is not defined在node_modules\ffi\lib_foreign_function.js:59

谢谢,任何帮助都非常感谢。

好吧,最终我用 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);

最新更新