Hello all,
I'm trying to embed IE to a GTK app and control IE behavior via the DWebBrowserEvents2 interface. Embedding works, events like OnBeforeNavigate2 or OnNewWindow2 are comming fine but when I try to return (from the callback) a Cancel value which suppose stop IE from next page loading or new explorer window creation, the program either crashes or doesn't prevent IE from moving to next page or opening a new window.

Any idea how I could approach this problem?

Bellow are details and code snippets.

Thanks a lot,
 Vasek

->I've used this example as a base
http://pywin32.cvs.sourceforge.net/pywin32/pywin32/com/win32comext/axcontrol/demos/container_ie.py?revision=1.2&view=markup

->generated the stubs using
python makepy.py C:\WINDOWS\system32\shdocvw.dll

->defined  callback class using the generated classes (DWebBrowserEvents2)
class BrowserCB(DWebBrowserEvents2):
   def __init__(self, oobj):
       DWebBrowserEvents2.__init__(self, oobj)
#Cancel is in/out param in COM def OnBeforeNavigate2(self, pDisp, URL, Flags, TargetFrameName, PostData, Headers, Cancel): if URL != "about:blank" :
           # return 1 # <- this crashes IE
return True # this doesnt work - doesn stop IE to move to non blank page # Cancel is in/out param in COM def OnNewWindow2(self, ppDisp=defaultNamedNotOptArg, Cancel=defaultNamedNotOptArg):
       print "OnNewWindow2"
return True # returns pythoncom error: Python error invoking COM method.


-> callback class registration snippet
browser.DoVerb(axcontrol.OLEIVERB_SHOW, None, site, -1, self.hwnd, rect)
       b2 = Dispatch(browser.QueryInterface(pythoncom.IID_IDispatch))
       self.browser2 = b2
self.eventSink = BrowserCB(self.browser2) #only this line was added to the above example from CVS

_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to