William James wrote:
> This seems not to work.
> 
> require 'win32ole'
> ie = nil
> WIN32OLE.new('Shell.Application').Windows.each do |window|
>   p window.FullName
>   p window.Name
>   begin
>     title = window.Document.Title
>     p title
>     if title =~ /Internet Explorer/
>       ie = window
>     end
>   rescue
>   end
> end
> p ie
> 
> --- output ---
> "C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE"
> "Microsoft Internet Explorer"
> ""
> nil

A key distinction here is between window.Name and window.Document.Title 
.

window.Document.Title is the Title as defined in the HTML code of a 
window with a Type of "HTML Document". This probably equates to the 
window.LocationName property. The titlebar text will include both 
window.Document.Title and window.Name, so...

  if window.Document.Title =~ /Internet Explorer/

will usually NOT work, though...

  if window.Name =~ /Internet Explorer/

...would work.

To grab an IE window from the Shell.Application.Windows collection...

You could test the Type property:

  if window.Type == 'HTML Document'

or you could test the window.Name property:

  if window.Name =~ /Internet Explorer/

But to grab a *particular* IE window from the Shell.Application.Windows 
collection, you could use the window.Document.Title or 
window.LocationName property

  if window.Document.Title =~ /Yahoo/

  if window.LocationName =~ /Yahoo/

David

http://rubyonwindows.blogspot.com
-- 
Posted via http://www.ruby-forum.com/.