Paul,
You are right the browser needs to be navigated to some valid url. This gets the browser document structure set up properly. Your about:blank is a good one. There may be other ways to get the inner objects setup, but about:blank is so easy I'm not even sure it's worth exploring further. So to go purely from memory to browser:
oBrowser.Navigate( "about:blank" )
oBrowser.Document.Body.InnerHTML = "< html>< body>this is a test< /body>< /html>"
(spaces added after the < for posting here)
> Yeah, I thought of that way after posting. I originally tried shortcircuiting the navigate and using the Write method to pass the HTML into the stream. I couldn't make that work consistantly, while navigating to a file did. I guess with using the InnerHTML you could navigate to "about:blank" then substitute in the your own HTML. The only thing I would worry about is if you have to wait until the page have finished rendering before substituting in the HTML.
>
>When using the "Write" method it would intermittently fail on machines that were faster (or slower). Have you had this type of problem w/using InnerHTML?