I dug into this a little more, but I'm afraid there isn't much good news to
share :(
> What I would like to achieve is the IWebBrowser2 object of the
> dialog.htm page. I know I can access anything on the page itself via
> the IHTMLDocument2 (which I already have) but that's not my need.
I can reproduce this your problem. I also added ObjectFromLresult to pywin32 -
so getting the doc object from a HWND will (in pywin32-212) be as easy as:
# See KB Q249232
hwnd = win32gui.FindWindow('IEFrame', None)
for child_class in ['TabWindowClass', 'Shell DocObject View',
'Internet Explorer_Server']:
hwnd = win32gui.FindWindowEx(hwnd, 0, child_class, None)
msg = win32gui.RegisterWindowMessage("WM_HTML_GETOBJECT")
rc, result = win32gui.SendMessageTimeout(hwnd, msg, 0, 0,
win32con.SMTO_ABORTIFHUNG, 1000)
ob = pythoncom.ObjectFromLresult(result, pythoncom.IID_IDispatch, 0)
doc = Dispatch(ob)
doc.bgColor = "red"
(The above is the simple case - I understand your example was more complex due
to the modal dialog). But as you said, you are already at that point with
ctypes, and we move into your problem. From the code above, pywin32 can take
over - it already has native support for IServiceProvider - so, something like
the following, from your failing sample.
ihtmlwin = doc.parentWindow
# ... the service provider ...
pIServiceProvider =
ihtmlwin._oleobj_.QueryInterface(pythoncom.IID_IServiceProvider)
# ... and the IWebBrowser2:
ie = pIServiceProvider.QueryService(IID_IWebBrowserApp, IID_IWebBrowserApp)
And the problem I see is that QueryService *always* fail with E_NOINTERFACE,
regardless of the interface requested as the second param. Even IUnknown
fails, which doesn't make sense, so my conclusion is that the object is simply
refusing to return that service (rather than failing to return the interface
for the service). The docs imply IE should indeed work here, so I suspect the
issue relates specifically to the modal window. I'm afraid I ran out of time on
this issue to confirm the QueryService worked in the "normal" case - I just got
far enough to ensure myself the problem wasn't related to Python ;)
Hope your are progressing regardless ;)
Cheers,
Mark
_______________________________________________
python-win32 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-win32