javascript - Node-ffi 窗口列表

标签 javascript node.js windows dll node-ffi

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

相关文章:

PHP 和 Unicode : Weirdness between Windows and Linux

windows - 测试 Windows 安装程序

javascript - Typescript Omit 似乎将并集转换为交集

javascript - 使用 AngularJS 的动态元图像

node.js - sails 船长 : how to check if file was uploaded or not

javascript - node.js 模块应该导出命名函数还是对象?

objective-c - Windows 中的 Objective C "cannot find -lgnustep-base"

javascript - Jquery .click() 导致代码中断

javascript - 如何在 iScroll 中使用嵌套列表/保护内部滚动操作的外部滚动?

mysql - Sequelize 在收到 SequelizeDatabaseError : ER_LOCK_DEADLOCK 后正在创建悬空/挂起的 mysql 连接