我一直在试图与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