X11 js-ctypes, доступ XQueryTree к wChild[i]

        var wRoot = new ctypes.unsigned_long();
        var wParent = new ctypes.unsigned_long();
        var wChild = new ctypes.unsigned_long.ptr();
        var nChildren = new ctypes.unsigned_int();

        var rez = XQueryTree(_disp, w, wRoot.address(), wParent.address(), wChild.address(), nChildren.address())
        if(rez != 0) { //can probably test this against `None` instead of `0`
            var nChildrenCasted = ctypes.cast(nChildren, ctypes.unsigned_int).value;
            for(var i=0; i<nChildrenCasted; i++) {
                searchForPidStartingAtWindow(wChild[i]);
            }
        } else {
            console.warn('this window has no children, rez:', rez);
        }

Я успешно получаю nChildrenCasted это 94.

Однако я не могу получить доступ к элементам wChild, это должен быть массив

Итак, проблема на линии: searchForPidStartingAtWindow(wChild[i]);

как пройти wChild[i]?

Я попытался:

var wChildCasted = ctypes.cast(wChild, ctypes.unsigned_long).contents;
console.log('wChildCasted:', wChildCasted);

Я почти уверен, что это в том же духе, но я не могу понять это

полный код, можно скопировать и запустить с блокнота:

https://gist.github.com/Noitidart/224f8999eb26ec52894f


person Noitidart    schedule 20.09.2014    source источник


Ответы (1)


Вам нужно преобразовать необработанный тип указателя в указатель ArrayType:

var wChildCasted = ctypes.cast(wChild, ctypes.ArrayType(ctypes.unsigned_long, nChildrenCasted).ptr).contents;
person Josh Matthews    schedule 20.09.2014