我想从Windows应用程序中删除文本数据,以使用现有的ruby代码进行其他处理。是否有可能在使用Ruby在Windows应用程序中更新数据时刮取数据?我从哪里开始?
答案 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”实例,并每秒显示一次文本控件的内容。