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);
我希望能够使用 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);