Возможно ли скрининг экрана в Windows-приложении с ruby? - PullRequest
2 голосов
/ 07 апреля 2010

Я хочу очистить текстовые данные из приложения Windows для дополнительной обработки с использованием существующего кода ruby. Можно ли очистить данные по мере их обновления в приложении Windows с помощью Ruby и с чего начать?

Ответы [ 2 ]

2 голосов
/ 07 апреля 2010

Если текст находится в стандартном элементе управления Windows, вы можете получить его с помощью AutoIt .Это собственный язык сценариев, и вы можете взаимодействовать с его функциями в Ruby, например:

require 'win32ole'
STDOUT.sync = true

App = "calc.exe"
AppClass = "[CLASS:SciCalc]"    # retrieved with AutoIt Window Info

ai = WIN32OLE.new("AutoItX3.Control")
ai.run( App )
ai.winwaitactive( AppClass )
handle = "[HANDLE:#{ai.wingethandle(AppClass)}]"

until ai.winexists( handle ).zero?
  puts ai.controlgettext( handle, "", "Edit1" ) # retrieved with AutoIt Window Info
  sleep 1
end

Это открывает экземпляр «Calc» и каждую секунду отображает содержимое текстового элемента управления.

2 голосов
/ 07 апреля 2010

Если вы достаточно хорошо понимаете Windows API (или можете достаточно хорошо использовать поисковую систему для поиска соответствующих API), то вызов их из Ruby, как правило, возможен.

Библиотека Win32API - это традиционный способ доступа к API Windows; есть также новый сексуальный FFI , хотя могут возникнуть нерешенные вопросы, касающиеся компилятора, так как грохочет переход от MSVC6 к gcc.

...