2016-06-07 24 views
0

我希望能夠使用Node-ffi獲取Windows操作系統中所有當前打開的窗口/程序的列表,大概是User32.dll中的EnumWindows或類似的東西。我希望能夠得到一個句柄,比如User32中的'FindWindowW',還有一個進程名稱的字符串,所以我知道它是哪一個。Node-ffi窗口列表

由於某種靈魂我得到了'FindWindowW的工作和了解的this question對EnumWindows的,但我就是不能讓這種解決辦法的工作, 總是隻得到node_modules Uncaught ReferenceError: libm is not defined \ FFI \ lib_foreign_function.js :59

謝謝任何​​幫助,非常感謝。

回答

1

好吧,最終我得到了這個解決了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); 
+0

好吧,我做了一個NPM模塊爲此,[節點隱藏](https://www.npmjs.com/package/node - 隱藏)去嘗試一下 – Ducky