AutoIt over Ruby question - How do I call ObjGet()?

S

sean_n

Here's an example of using autoit inside of ruby.

require 'win32ole'
autoit = WIN32OLE.new("AutoItX3.Control")
autoit.WinActivate('Yahoo!')

So if this works, how come this doesn't work?

require 'win32ole'
autoit = WIN32OLE.new("AutoItX3.Control")
obj=autoit.ObjGet('','InternetExplorer.Application')

How do I call the ObjGet() function? In other words, what COM object
contains that method?
 
D

David Mullet

sean_n said:
Here's an example of using autoit inside of ruby.

require 'win32ole'
autoit = WIN32OLE.new("AutoItX3.Control")
autoit.WinActivate('Yahoo!')

So if this works, how come this doesn't work?

require 'win32ole'
autoit = WIN32OLE.new("AutoItX3.Control")
obj=autoit.ObjGet('','InternetExplorer.Application')

How do I call the ObjGet() function? In other words, what COM object
contains that method?

I can't offer much help with regard to AutoIt, but you can connect to an
existing instance of IE using win32ole and the Shell object's Windows
collection:

ie = nil
for window in WIN32OLE.new('Shell.Application').Windows
begin
if window.Document.Title =~ /Yahoo/
ie = window
end
rescue
end
end

Further details here:

http://rubyonwindows.blogspot.com/2007/05/shell-windows-collection-of-internet.html

Hope that helps!

David

http://rubyonwindows.blogspot.com
 
W

William James

I can't offer much help with regard to AutoIt, but you can connect to an
existing instance of IE using win32ole and the Shell object's Windows
collection:

ie = nil
for window in WIN32OLE.new('Shell.Application').Windows
begin
if window.Document.Title =~ /Yahoo/
ie = window
end
rescue
end
end

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
 
D

David Mullet

William said:
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
 
M

mully

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

[Re-posting my reply, as it seems to have been truncated on Google
Groups...]

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
 
W

William James

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

[Re-posting my reply, as it seems to have been truncated on Google
Groups...]

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...

The problem was that I had no html document loaded; the titlebar
text was "about:blank - Microsoft Internet Explorer" but
window.Document.Title was simply "".
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,777
Messages
2,569,604
Members
45,233
Latest member
AlyssaCrai

Latest Threads

Top