Re: Querying ISimpleDOMDocument on MozillaWindowClass returns 0x80004002 with FF 3.0.7 (works fine with 3.0.6 & 3.1B2 !)

Sylvain <[email protected]>
Newsgroups gmane.comp.mozilla.accessibility
Organization http://groups.google.com
Message-ID <c7f64e91-7ccd-489a-a1ea-e7bf6273a7e0@j39g2000yqn.googlegroups.com>
On 7 mar, 11:45, Sylvain <[email protected]> wrote:
> On 7 mar, 09:21, Marco Zehe <[email protected]> wrote:
>
>
>
>
>
> > Sylvain,
>
> > There was a change we made to QueryService for Firefox 3.0.7, see bug
> > 458871 <https://bugzilla.mozilla.org/show_bug.cgi?id=458871>. We didn't
> > change QueryInterface, though. What happens if you pass in the
> > iSimpleDomNode IID instead of iSimpleDOMDocument?
>
> > Marco
>
> > On 06.03.2009 00:26, [email protected] wrote:
>
> > > Hi all,
>
> > > This little peace of  code works fine with Firefox 3.0.6 and Firefox
> > > 3.1B2, but does not with Firefox 3.0.7!
>
> > > My aim is to get the current document URL, and w is the handle to the
> > > "MozillaWindowClass" class Window :
>
> > > hr=AccessibleObjectFromWindow(tSuivi.w,(DWORD)
> > > OBJID_CLIENT,IID_IAccessible,(void**)&pAccessible);
> > > if (FAILED(hr)) ...
> > > varStart.vt=VT_I4;
> > > varStart.lVal=CHILDID_SELF;
> > > hr=pAccessible->accNavigate(0x1009,varStart,&varResult); // 0x1009 =
> > > NAVRELATION_EMBEDS
> > > if (FAILED(hr)) ...
> > > if (varResult.vt!=VT_DISPATCH) ...
> > > pIDispatch=(IDispatch *)varResult.lVal;
> > > if (pIDispatch==NULL) ...
> > > hr =pIDispatch->QueryInterface(IID_ISimpleDOMDocument, (void**)
> > > &pSimpleDOMDocument);
> > > if (FAILED(hr)) ...
> > > hr = pSimpleDOMDocument->get_URL(&bstrURL);
> > > if (FAILED(hr)) ...
>
> > > The "pIDispatch->QueryInterface(IID_ISimpleDOMDocument, (void**)
> > > &pSimpleDOMDocument);" statement returns 0x80004002. So I cannot get
> > > my URL...
>
> > > Any clue?
>
> > > Thanks!
>
> > > - Sylvain
>
> > > Aaron, if you're reading this, I would be very pleased if you could
> > > help :-).- Masquer le texte des messages précédents -
>
> > - Afficher le texte des messages précédents -
>
> Marco,
>
> Thank you for your response. Unfortunately, QueryInterface with
> IID_ISimpleDOMNode also fails with 0x80004002 error code.
>
> This error code means E_NOINTERFACE, while the change you made in
> 3.0.7 seems to return the E_INVALIDARG error code.
>
> Another idea ?
>
> - Sylvain- Masquer le texte des messages précédents -
>
> - Afficher le texte des messages précédents -

Yes ! I've just found the solution ! Here is the code that works fine
to retrieve current document URL with Firefox 3.0.7 and Firefox
3.1B2 :

(w is the handle of the "MozillaContentWindowClass" class window)

hr=AccessibleObjectFromWindow(tSuivi.w,(DWORD)
OBJID_CLIENT,IID_IAccessible,(void**)&pAccessible);
if (FAILED(hr)) ...
hr =pAccessible->QueryInterface(IID_IServiceProvider, (void**)
&pServiceProvider);
if (FAILED(hr)) ...
hr =pServiceProvider->QueryService(refguid,IID_ISimpleDOMDocument,
(void**) &pSimpleDOMDocument);
if (FAILED(hr)) ...
hr = pSimpleDOMDocument->get_URL(&bstrURL);
if (FAILED(hr)) ...

:-)

- Sylvain
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.