我一直在尝试与 Windows 上的另一个应用程序交互,该应用程序没有实现任何数据交换协议(protocol)。所以我认为最好的方法是从一个应用程序中获取数据,然后通过发送击键将其发送到另一个应用程序,模拟人类交互。
但是我很难尝试实现这种行为!您知道如何使用 Ruby 执行此操作吗?
最佳答案
您可以安装 Ruby-FFI gem : [sudo] gem install ffi
,用它加载user32.dll
,然后绑定(bind)调用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
关于ruby - 如何从 ruby 应用程序将击键发送到窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3852254/