73 lines
2.2 KiB
Python
73 lines
2.2 KiB
Python
|
# This demo uses the IE4 Web Browser control.
|
||
|
|
||
|
# It catches an "OnNavigate" event, and updates the frame title.
|
||
|
# (event stuff by Neil Hodgson)
|
||
|
|
||
|
import sys
|
||
|
|
||
|
import regutil
|
||
|
import win32api
|
||
|
import win32con
|
||
|
import win32ui
|
||
|
from pywin.mfc import activex, window
|
||
|
from win32com.client import gencache
|
||
|
|
||
|
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()
|