Hello all,
some time ago was trying to implement OnBeforeNavigate2 callback in python. (DWebBrowserEvents2 - http://msdn.microsoft.com/en-us/library/aa768283(VS.85).aspx)


BeforeNavigate2 has 7 parameters, 1 marked as [in,out] and the rest 6 as [in] only. The one out parameter (Cancel) controls whether page will be navigated to or not, depending what you return.

This definition come straight to following implementation. (which doesnt work)
<snip>
    #this version doesnt work
    def OnBeforeNavigate2(self, pDisp, .... Cancel):
        print URL
        if self.pageNotAllowed(URL):
                return  True   #do not navigate there
        return False           #Navigate there
</snip>


After some debugging of pywin32 package, I found that not only the 1 param is passed by variant "by_ref" but 6 of them, even if the parameters are not "out" parameters my IE uses them as "by_ref"

<snip>
    #this version works fine
    def OnBeforeNavigate2(self, pDisp, .... Cancel):
        print URL
        if self.pageNotAllowed(URL):
                return  None, None, None, None, None, True
        return None, None, None, None, None, False
</snip>

Question:
If I understand correctly this python callback implementation is IE implementation dependent. If some new version of IE will start to call this callback with [lets say]4 "by_ref" params only. Then this will stop work.

Is it possible to write python code independent of number "by_ref" parameters passed?

Thanks,
 Vaclav

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

Reply via email to