codekingpro/portable-devtools
114k
1# This demo uses the IE4 Web Browser control.2 3# It catches an "OnNavigate" event, and updates the frame title.4# (event stuff by Neil Hodgson)5 6import sys7 8import regutil9import win32api10import win32con11import win32ui12from pywin.mfc import activex, window13from win32com.client import gencache14 15WebBrowserModule = gencache.EnsureModule(16 "{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}", 0, 1, 117)18if WebBrowserModule is None:19 raise ImportError("IE4 does not appear to be installed.")20 21 22class MyWebBrowser(activex.Control, WebBrowserModule.WebBrowser):23 def OnBeforeNavigate2(24 self, pDisp, URL, Flags, TargetFrameName, PostData, Headers, Cancel25 ):26 self.GetParent().OnNavigate(URL)27 # print "BeforeNavigate2", pDisp, URL, Flags, TargetFrameName, PostData, Headers, Cancel28 29 30class BrowserFrame(window.MDIChildWnd):31 def __init__(self, url=None):32 if url is None:33 self.url = regutil.GetRegisteredHelpFile("Main Python Documentation")34 if self.url is None:35 self.url = "http://www.python.org"36 else:37 self.url = url38 pass # Dont call base class doc/view version...39 40 def Create(self, title, rect=None, parent=None):41 style = win32con.WS_CHILD | win32con.WS_VISIBLE | win32con.WS_OVERLAPPEDWINDOW42 self._obj_ = win32ui.CreateMDIChild()43 self._obj_.AttachObject(self)44 self._obj_.CreateWindow(None, title, style, rect, parent)45 rect = self.GetClientRect()46 rect = (0, 0, rect[2] - rect[0], rect[3] - rect[1])47 self.ocx = MyWebBrowser()48 self.ocx.CreateControl(49 "Web Browser", win32con.WS_VISIBLE | win32con.WS_CHILD, rect, self, 100050 )51 self.ocx.Navigate(self.url)52 self.HookMessage(self.OnSize, win32con.WM_SIZE)53 54 def OnSize(self, params):55 rect = self.GetClientRect()56 rect = (0, 0, rect[2] - rect[0], rect[3] - rect[1])57 self.ocx.SetWindowPos(0, rect, 0)58 59 def OnNavigate(self, url):60 title = "Web Browser - %s" % (url,)61 self.SetWindowText(title)62 63 64def Demo(url=None):65 if url is None and len(sys.argv) > 1:66 url = win32api.GetFullPathName(sys.argv[1])67 f = BrowserFrame(url)68 f.Create("Web Browser")69 70 71if __name__ == "__main__":72 Demo()73 