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

kanal724 · 发布于 2017年4月28日 · 最后由 mizuhashi 回复于 2017年4月29日 · 292 次阅读
96

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

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

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

handle = getdw.call nil, 'Chrome_RenderWidgetHostHWND'

puts handle

出来的结果是“0”

或者是否有其他方法?

共收到 2 条回复
18852

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

23529

我觉得你应该要用的是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]
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册