0

キーボードのカーソル位置を設定するために次のコードを書きました。しかし、ゴミを取得します。手がかり、何が欠けていますか?

var ffi = require('ffi');
var ref = require('ref');
var Struct = require('ref-struct');

var point = Struct({
    'x': 'long',
    'y': 'long'
  });
  var user32 = ffi.Library('user32.dll', {
      GetCaretPos:['bool',[locPtr]]
  });
var pbuf = new point();
  caretpos = user32.GetCaretPos(pbuf);

  console.log(":",pbuf.x  );

次に、次のことを試しましたが、うまくいきません。

var ffi = require('ffi');
var ref = require('ref');
var Struct = require('ref-struct');

 var voidPtr = ref.refType(ref.types.void);
  var user32 = ffi.Library('user32.dll', {
      GetCaretPos:['bool',[voidPtr]]
  });
var pbuf = new Buffer(2);
  caretpos = user32.GetCaretPos(pbuf);
 var cpos =(new Uint8Array(pbuf));
  console.log(">",cpos  ); //Doesn't work **> Uint8Array [ 0, 0, 0, 0 ]**
4

2 に答える 2

3

記事の見出しに「ノード FFI の GetCursorPos」と記載されているように、ポインター x、y を返します。

以下のコードは私にとってはうまくいきます.x、yポインタを取得するためのハックです.

var ffi = require('ffi');
var repbuffer = new Buffer(16); // holder for windows structures
var user32 = ffi.Library('user32.dll', {
    'GetCursorPos':['bool',['pointer']]
});
//Show mouse cords at console every sec
setInterval( function() { getmousepos();}, 1000);
function getmousepos(){
    var p = user32.GetCursorPos(repbuffer);
    var x= repbuffer[0]+ (repbuffer[1]*256); 
    var y= repbuffer[4]+(repbuffer[5]*256);  
    console.log(x + " " + y);
}
于 2016-12-07T13:11:00.120 に答える