我希望能够使用 Node-ffi 获取 Windows 操作系统中所有当前打开的窗口/程序的列表,大概是 User32.dll 中的 EnumWindows 或类似的东西。我希望能够获得一个句柄,例如 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);
关于javascript - Node-ffi 窗口列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37670273/