I'm using WIN32OLE_EVENT to set up some event handlers on various DHTML
elements in Internet Explorer, and I'm having a bit of trouble identifying
the right event dispinterfaces to use. The Microsoft online documentation
is less than helpful; they claim that you can use the HTMLElementEvents2
interface on most all the HTML elements you care about, but I'm getting the
following when I try:
interface not found
HRESULT error code:0x80004002
No such interface supported
Here's a code skeleton that outlines what I'm trying to do:
---------------- (snip) -----------------------
require 'win32ole'
ie = WIN32OLE.new('InternetExplorer.Application')
.
.
.
insert code to display a web page here...
.
.
.
elements = ie.document.all
elements.each do |element|
ev = WIN32OLE_EVENT.new(element, 'HTMLElementEvents2')
.
.
.
assign event handlers here
.
.
.
end
---------------- (snip) -----------------------
And here's the URL for the Microsoft documentation that makes the claims
about the HTMLElementEvents2 interface:
http://msdn.microsoft.com/workshop/browser/mshtml/tutorials/sink.asp
What am I missing? Do I have to somehow massage the element into a
different object that will handle the HTMLElementEvents2 interface? Or
should I be using another interface entirely? (BTW, is there any way in
WIN32OLE to figure out which interfaces an object supports?)
Any help will be much appreciated!
Will Gwaltney
SAS Institute