Я хотел использовать функцию SendInput из окон Api в nodejs, используя пакет FFI.using SendInput в Node-FFI
Мои знания о C ограничены, поэтому я не могу понять, какая у меня проблема, Я в основном пытаюсь практически нажимать клавишу на клавиатуре.
Вот код у меня есть:
var ffi = require('ffi');
var ref = require ('ref');
var struct = require ('ref-struct');
var keyboardInput = struct({
'type': 'int',
'wVK': 'int',
'wScan': 'int',
'dwFlags': 'int',
'time': 'int',
'dwExtraInfo': 'int64'
});
var keyboardInputPtr = ref.refType(keyboardInput);
var keyboard = new keyboardInput();
keyboard.type = 1;
keyboard.wVK = 0x41;
keyboard.wScan = 0;
keyboard.dwFlags = 2;
keyboard.time = 0;
keyboard.dwExtraInfo = 0;
var user32 = ffi.Library('user32', {
'SendInput': [ 'int', [ 'uint', keyboardInputPtr, 'int' ] ]
});
setInterval(function(){
var r = user32.SendInput(1, keyboard.ref(), 40);
console.log(r);
}, 500);
Он регистрирует меня «1» в консоли, не следует, что означает, что она работает? Потому что я не нажимаю клавишу, когда открываю блокнот.
'SendInput' помещает ввод в очередь ввода оборудования. Независимо от того, какое окно (или поток, действительно) находится на переднем плане в момент получения этого входного события, получает вход. Поэтому, когда вы запускаете приложение, естественно, Notepad не является передним окном. Во всяком случае, то, что вы описали, является вашим предлагаемым решением. Теперь какая ** проблема ** вы действительно пытаетесь решить? – IInspectable
Никто никогда не притворяется вводным документом в качестве конечной цели. Что вы действительно пытаетесь сделать. Вполне возможно, даже если вы можете подделать его, я запомнил, что ваша настоящая цель не будет решена одинаково. –
@IInspectable Я пытаюсь написать программу, которая нажимает кнопку (на клавиатуре) в текущее активное окно. С интервалом это в основном как автоматический кликер. – alphuite