是否可以使用ruby来擦除Windows应用程序?

时间:2010-04-07 06:39:51

标签: windows ruby screen-scraping

我想从Windows应用程序中删除文本数据,以使用现有的ruby代码进行其他处理。是否有可能在使用Ruby在Windows应用程序中更新数据时刮取数据?我从哪里开始?

2 个答案:

答案 0 :(得分:2)

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

Win32API library是访问Windows API的传统方式;还有性感的新FFI,尽管可能存在关于编译器的突出问题,因为MSVC6到gcc的转换隆隆声。

答案 1 :(得分:2)

如果文本位于标准的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”实例,并每秒显示一次文本控件的内容。