我一直在尝试与Windows上的另一个应用程序进行交互,而这些应用程序没有实现任何数据交换协议。所以我认为最好的方法是从应用程序中获取数据,然后通过发送击键,模拟人工交互将其发送到另一个应用程序。
但是我在努力实现这种行为时遇到了困难!你知道怎么用Ruby做这个吗?
答案 0 :(得分:2)
您可以安装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
答案 1 :(得分:1)
keybd_event可行,您也可以使用jruby来编写java Robot类的脚本