12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- # This demo uses the IE4 Web Browser control.
- # It catches an "OnNavigate" event, and updates the frame title.
- # (event stuff by Neil Hodgson)
- import win32ui, win32con, win32api, regutil
- from pywin.mfc import window, activex
- from win32com.client import gencache
- import sys
- WebBrowserModule = gencache.EnsureModule("{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}", 0, 1, 1)
- if WebBrowserModule is None:
- raise ImportError("IE4 does not appear to be installed.")
- class MyWebBrowser(activex.Control, WebBrowserModule.WebBrowser):
- def OnBeforeNavigate2(self, pDisp, URL, Flags, TargetFrameName, PostData, Headers, Cancel):
- self.GetParent().OnNavigate(URL)
- #print "BeforeNavigate2", pDisp, URL, Flags, TargetFrameName, PostData, Headers, Cancel
- class BrowserFrame(window.MDIChildWnd):
- def __init__(self, url = None):
- if url is None:
- self.url = regutil.GetRegisteredHelpFile("Main Python Documentation")
- if self.url is None:
- self.url = "http://www.python.org"
- else:
- self.url = url
- pass # Dont call base class doc/view version...
- def Create(self, title, rect = None, parent = None):
- style = win32con.WS_CHILD | win32con.WS_VISIBLE | win32con.WS_OVERLAPPEDWINDOW
- self._obj_ = win32ui.CreateMDIChild()
- self._obj_.AttachObject(self)
- self._obj_.CreateWindow(None, title, style, rect, parent)
- rect = self.GetClientRect()
- rect = (0,0,rect[2]-rect[0], rect[3]-rect[1])
- self.ocx = MyWebBrowser()
- self.ocx.CreateControl("Web Browser", win32con.WS_VISIBLE | win32con.WS_CHILD, rect, self, 1000)
- self.ocx.Navigate(self.url)
- self.HookMessage (self.OnSize, win32con.WM_SIZE)
- def OnSize (self, params):
- rect = self.GetClientRect()
- rect = (0,0,rect[2]-rect[0], rect[3]-rect[1])
- self.ocx.SetWindowPos(0, rect, 0)
- def OnNavigate(self, url):
- title = "Web Browser - %s" % (url,)
- self.SetWindowText(title)
- def Demo(url=None):
- if url is None and len(sys.argv)>1:
- url = win32api.GetFullPathName(sys.argv[1])
- f = BrowserFrame(url)
- f.Create("Web Browser")
- if __name__=='__main__':
- Demo()
|