Hi,
I am trying to get the IWebBrowser2 object from the HWND of an open IE window.
I have seen this topic covered in many languages, and I am following the same
steps, but in python, yet I am hitting a wall that I can't figure how to
break... So, yes, I have been 'googling', browsing and testing many options,
but without the desired result.
So, here details about my python installation on WinXP:
- python-2.5.2.msi
- pywin32-210.win32-py2.5.exe
- comtypes-0.4.2.win32.exe
- ServProv.tlb --> used to generate the IServiceProvider wrappers
Now, my scenario is IE7 already open on a webpage 'Page1', and a modal popup
webpage 'Modal1', which is not a Messagebox/Alert. Once that is up, the
following code is supposed to retrieve the IWebBrowser2 object of the 'Modal1'
window.
(assume all the imports are done correctly)
# get the window, and then reach the 'Internet Explorer_Server'
win1 = win32gui.FindWindow('Internet Explorer_TridentDlgFrame', 'Modal1')
win1 = winGuiAuto.findControl(win1, None, 'Internet Explorer_Server', None)
# get ready to get the IHTMLDocument2 from win1
#
#
oleacc = oledll.LoadLibrary ( 'oleacc.dll' )
WM_HTML_GETOBJECT = windll.user32.RegisterWindowMessageA ('WM_HTML_GETOBJECT' )
lResult = c_ulong ( )
pIHTMLDocument2 = POINTER ( IHTMLDocument2 ) ( )
ret = windll.user32.SendMessageTimeoutA ( c_int ( win1 ), c_int
(WM_HTML_GETOBJECT),c_int ( 0 ), c_int ( 0 ), c_int ( SMTO_ABORTIFHUNG ), c_int
( 1000 ), byref (lResult ) )
oleacc.ObjectFromLresult ( lResult, byref ( IHTMLDocument2._iid_ ), 0,byref
(pIHTMLDocument2 ) )
# at this point pIHTMLDocument2 is at the right window, as the 'title' property
gives me what I expect
# now followup to get the parent ...
ihtmlwin = pIHTMLDocument2.parentWindow
# ... the service provider ...
pIServiceProvider = ihtmlwin.QueryInterface(IServiceProvider,
IServiceProvider._iid_)
# ... and the IWebBrowser2:
ie = pIServiceProvider.QueryService(IWebBrowserApp._iid_, IWebBrowser2._iid_)
# which - of course - fails.
Error returned:
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
COMError: (-2147467262, 'No such interface supported', (None, None, None, 0,
None))
which would imply that I am in the wrong 'place'. But I can't see how.
I must be doing something wrong, but can't figure what. Any help very much
appreciated, and sorry for the long post.
regards,
.salvo
ps. this a link to one of the places that describe the procedure i have
followed:
http://www.forum.it-berater.org/index.php?topic=574.msg1060#msg1060
_______________________________________________
python-win32 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-win32