1

Node-ffi を使用して、Windows OS で現在開いているすべてのウィンドウ/プログラムのリストを取得できるようにしたいと考えています。User32 の 'FindWindowW' からのように、ハンドルとプロセス名の文字列を取得できるようにしたいので、それがどれであるかがわかります。

親切な魂のおかげで、「FindWindowW」が機能し、EnumWindows に関するこの質問を知っていますが、そのソリューションを機能させることができず、常にUncaught ReferenceError: libm is not definednode_modules\ffi\lib_foreign_function.js:59 に入るだけです。

ありがとう、どんな助けでも大歓迎です。

4

1 に答える 1

3

わかりました、最終的に私はこれを次のように 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);
于 2016-06-10T02:07:08.630 に答える