测试 Windows 界面上 Ruby 怎么激活已打开的窗口,并在窗口内操作 (获取元素并做相关操作等)

kanal724 · 2017年04月28日 · 最后由 mizuhashi 回复于 2017年04月29日 · 6662 次阅读

本人新手,求助各位大神,ruby 怎么激活已打开的窗口,并在窗口内操作(获取元素并做相关操作等)

尝试过 win32api,但是都不成功,求正确方法

getdw = Win32API.new 'user32', 'GetActiveWindow', ['P', 'P'], 'L'

handle = getdw.call nil, 'Chrome_RenderWidgetHostHWND'

puts handle

出来的结果是“0”

或者是否有其他方法?

ruby 不擅长桌面,可以试试 electron

我觉得你应该要用的是 GetForegroundWindow,参照 http://stackoverflow.com/questions/10740143/get-current-active-window-title-in-c GetActiveWindow 只能 get 你自己进程里的。

另外 win32api 和 dl 已经 deprecate,建议使用 fiddle 或 ffi:

require 'fiddle'
require 'fiddle/import'
require 'fiddle/types'

module User32
  extend Fiddle::Importer
  dlload 'user32'
  include Fiddle::Win32Types

  extern 'HWND GetForegroundWindow()'
  extern 'int GetWindowText(HWND, char*, int)'
end

title = "\0" * 255
hwnd = User32.GetForegroundWindow
length = User32.GetWindowText(hwnd, title, 255)
p title[0...length]
需要 登录 后方可回复, 如果你还没有账号请 注册新账号