[ bzero @ 18.01.2006. 18:35 ] @
Napravio sam program koji koristi Internet explorer preko COM-a i potrebno mi je da hvatam odredjene dogadjaje, konkretno otvaranje novog prozora i before navigate. Otprilike ovako:

Code:

.....

class ExplorerEvents:
    def OnNewWindow2(self, pDisp, Cancel):
        #Cancel = True # ovo takodje ne radi
        return (pDisp, True) # ali ovo radi lepo, prozori se ne otvaraju
        
    def OnBeforeNavigate2(self, pDisp, URL, Flags, TargetFrameName, PostData, Headers, Cancel):
        print "OnBeforeNavigate2: ", URL
        if URL == 'http://www.forbiden-site.com/':
            Cancel = True # ovo ne radi

......

ie = win32com.client.DispatchEx("InternetExplorer.Application")
ie_events = win32com.client.WithEvents(ie, ExplorerEvents)

ie.Navigate(url)

pythoncom.PumpWaitingMessages()

itd ......


Sve je ovo lepo, ali je problem u sledecem: ne mogu da u OnBeforeNavigate2 sprecim da explorer ode na neki URL. Prema onome sto sam procitao trebalo bi da je dovoljno da se u OnBeforeNavigate2 Cancel postavi na True, medjutim ovo ne radi. Slican problem sam imao kod OnNewWindow2, kada sam hteo da sprecim da se otvaraju novi prozori, Cancel = True takodje nije radilo, ali sam nasao kako ustvari treba uraditi return (pDisp, True/False) i to je to. Medjutim za OnBeforeNavigate2 sam probao kojesta i nista ne radi.

Jel ima neko iskustva sa ovim ili makar ideju sta da uradim.
[ bzero @ 19.01.2006. 09:07 ] @
U medjuvremenu sam jos ponesto probao i nasao resenje, return True/False ce da odradi posao, znaci:

Code:

def OnBeforeNavigate2(self, pDisp, URL, Flags, TargetFrameName, PostData, Headers, Cancel):
    print "OnBeforeNavigate2: ", URL

    if URL == 'http://www.forbiden-site.com/':
        return True

    return False