Как отправить нажатия клавиш в Windows из приложения ruby? - PullRequest
1 голос
/ 04 октября 2010

Я пытался взаимодействовать с другим приложением в Windows, в котором не реализован протокол обмена данными.Поэтому я решил, что лучший способ сделать это - извлечь данные из приложения и отправить их другому, отправив нажатия клавиш, имитируя взаимодействие с человеком.

Но мне так трудно пытаться реализовать этот видповедения!Вы знаете, как это сделать с помощью Ruby?

Ответы [ 2 ]

2 голосов
/ 04 октября 2010

Вы можете установить гем Ruby-FFI : [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 голос
/ 04 октября 2010

keybd_event будет работать, вы также можете использовать jruby для написания сценария java Robot class

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...