0
FFI 패키지를 사용하여 nodejs의 Windows API에서 SendInput 함수를 사용하려고했습니다.Node-FFI의 SendInput 사용
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'은 입력을 하드웨어 입력 대기열에 넣습니다. 이 입력 이벤트가 수집 될 때 전경에있는 윈도우 (또는 스레드)가 입력을받습니다. 따라서 응용 프로그램을 시작할 때 자연스럽게 메모장은 전경 창이 아닙니다. 어쨌든 당신이 설명한 것은 당신이 제안한 해결책입니다. 이제 ** 문제 **는 정말로 해결하려고합니까? – IInspectable
아무도 최종 목표로 메모장에 가짜 입력을했습니다. 당신은 정말로 무엇을하려고합니다. 아마도 당신이 그것을 가짜로 만들 수 있다고해도 나는 당신의 진정한 목표가 똑같은 방식으로 해결되지는 못한다는 것을 메모장에 전한다. –
@IInspectable 현재 활성 창에 단추 (키보드)를 클릭하는 프로그램을 작성하려고합니다. 간격으로 그것은 기본적으로 자동 clicker 같다. – alphuite