我一直在試圖與Windows上的另一個應用程序進行交互,它沒有實現任何數據交換協議。所以我認爲最好的方法是從應用程序提取數據並通過發送擊鍵將其發送到另一個模擬人類交互。如何從一個紅寶石應用程序發送按鍵到Windows?
但是我很難實現這種行爲!你知道如何使用Ruby做到這一點?
我一直在試圖與Windows上的另一個應用程序進行交互,它沒有實現任何數據交換協議。所以我認爲最好的方法是從應用程序提取數據並通過發送擊鍵將其發送到另一個模擬人類交互。如何從一個紅寶石應用程序發送按鍵到Windows?
但是我很難實現這種行爲!你知道如何使用Ruby做到這一點?
您可以安裝Ruby-FFI gem:[sudo] gem install ffi
,使用它來加載user32.dll
,然後綁定並調用keybd_event
方法。
這裏有一個例子來自FFI Github wiki:
require 'ffi'
module Win
VK_VOLUME_DOWN = 0xAE; VK_VOLUME_UP = 0xAF; VK_VOLUME_MUTE = 0xAD;
KEYEVENTF_KEYUP = 2
extend FFI::Library
ffi_lib 'user32'
ffi_convention :stdcall
attach_function :keybd_event, [ :uchar, :uchar, :int, :pointer ], :void
# simulate pressing the mute key on the keyboard
keybd_event(VK_VOLUME_MUTE, 0, 0, nil);
keybd_event(VK_VOLUME_MUTE, 0, KEYEVENTF_KEYUP, nil);
end
keybd_event會的工作,你也可以使用JRuby的腳本java的Robot類
我從來沒有玩過java = /想我會先嚐試ffi ..無論如何非常感謝! :) – 2010-10-05 13:07:20
只是我需要的東西! – 2010-10-05 13:06:50