是屏幕刮一个Windows应用程序与ruby可能吗?

我想从Windows应用程序刮取文本数据,使用现有的Ruby代码做额外的处理。 在使用Ruby的Windows应用程序中更新数据时,是否可以刮取数据?我从哪里开始?

如果你足够好的理解了Windows API(或者可以使用足够好的搜索引擎来找到相关的API),那么从Ruby中调用它们通常是可以实现的。

Win32API 库是访问Windows API的传统方式; 还有性感的新FFI ,虽然可能有关于编译器的突出问题,因为MSVC6 gcc过渡隆隆。

如果文本是在一个标准的Windows控件,你可以用它来获得它。 这是它自己的脚本语言,您可以在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”的实例并每秒显示文本控件的内容。