0
我想使用FFI包中的nodejs中的窗口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'將輸入放入硬件輸入隊列中。無論哪個窗口(或線程,真的)在獲取該輸入事件時在前臺都會收到輸入。所以當你啓動你的應用程序時,Notepad自然不是前臺窗口。無論如何,你所描述的是你提出的解決方案。現在你真的想解決什麼**問題? – IInspectable
沒有人僞造輸入記事本作爲最終目標。你真的想做什麼。很可能,即使你能僞造它,我也不會以同樣的方式解決你的真正目標。 –
@IInspectable我正試圖編寫一個程序,該程序可以將按鈕(在鍵盤上)點擊到當前活動窗口中。隨着時間間隔,它基本上就像一個自動點擊器。 – alphuite