- From: mark novak <menovak@facstaff.wisc.edu>
- Date: Wed, 14 Apr 1999 14:55:05 -0500
- To: Rob Relyea <rrelyea@microsoft.com>, w3c-wai-ua@w3.org
hi Rob thanks for including BHOs. We had looked at this technique before launching development of the HelpDB application, and decided to go out-of-process with the HelpDB approach. We have been very satisfied with the out-of-process COM/DOM approach to date, but then we aren't doing perhaps everything some specific tool or AT might require. Recently however, I've had to relook at BHOs for a more immediate request. Mark At 7:42 AM -0700 4/14/99, Rob Relyea wrote: >RR: Write a description of how a browser could expose its internal object >model to other processes including the ability to run a module of the AT to >run in the process. > >A browser can expose its internal object to applications throught several >methods. We are finalizing the method that we will let applications >communicate directly with Internet Explorer's object model. As soon as the >application to application method is finalized, I will send details. > >We already have a way for an AT developer to have a module of their code run >inside of IE's process: >Internet Explorer allows software developers to have their code executed >inside of the browser's process. This can be tremendously helpful when many >method calls need to be made to IE, as each call will be performed much more >quickly than the out of process case. > >A technique to do this is already documented in our Knowledge Base. Article >Q179230. This will work in IE4 and later. > >Excerpts from: >http://support.microsoft.com/support/kb/articles/Q179/2/30.asp > > >IEHelper-Attaching to IE4 using a Browser Helper Object > >SUMMARY >In order to attach to a running instance of Internet Explorer 4.0, you can >use a "Browser Helper Object." A "Browser Helper Object" is a DLL that will >attach itself to every new instance of Internet Explorer 4.0. You can use >this feature to gain access to the object model of a particular running >instance of Internet Explorer. You can also use this feature to get events >from an instance of Internet Explorer 4.0. > >This article also points to a sample that demonstrates how to implement a >Browser Helper Object. > >MORE INFORMATION >The following file is available for download from the Microsoft Software >Library: >IEHelper.exe (size: 39419 bytes) > >For more information about downloading files from the Microsoft Software >Library, please see the following article in the Microsoft Knowledge Base: > > ARTICLE-ID: Q119591 > TITLE : How to Obtain Microsoft Support Files from Online Services > > >Browser Helper Objects >When an instance of Internet Explorer 4.0 is started, it looks in the >registry for CLSIDs stored under the following key: > > HKLM\SOFTWARE\Microsoft\Windows > \CurrentVersion\Explorer\Browser Helper Objects > >If this key exists and there are CLSIDs listed under it, Internet Explorer >will use CoCreateInstance() to try to create an instance of each object >listed as a subkey under this key. Note that the CLSID of the object you >create must be listed as a subkey and not a named value. > >For example, imagine that the following entry exists in the registry, >HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper >Objects\{CE7C3CF0-4B15-11D1-ABED-709549C10000}. Internet Explorer will try >to create an instance of the object pointed to by the CLSID {CE7C3CF0-4B15- >11D1-ABED-709549C10000} each time Internet Explorer starts. > >These registry keys can be created manually or through the self registration >portion of your COM application. > >There are some requirements when creating a Browser Helper Object > >* The application that you create must be an in-proc server (that is, DLL). >* This DLL must implement IObjectWithSite. >* The IObjectWithSite::SetSite() method must be implemented. It is through >this method that your application receives a pointer to Internet Explorer's >IUnknown. (Internet Explorer actually passes a pointer to IWebBrowser2 but >the implementation of SetSite() receives a pointer to IUnknown.) You can use >this IUnknown pointer to automate Internet Explorer or to sink events from >Internet Explorer. >* It must be registered as a Browser Helper Object as described above. > >WARNING: Internet Explorer will create an instance of each Browser Helper >Object listed in the registry every time a new instance of Internet Explorer >is started. This means that if you have Active Desktop installed, the >Browser Helper Objects will be loaded every time you open a new folder as >well as when the browser itself is started. >(c) Microsoft Corporation 1998, All Rights Reserved. Contributions by Scott >Roberts, Microsoft Corporation > > >Last Reviewed: February 16, 1998 >) 1999 Microsoft Corporation. All rights reserved. Terms of Use. >Article ID: Q179230 > >Last Reviewed: >February 16, 1998 > >Provided by Support Online from Microsoft Product Support Services.
Received on Wednesday, 14 April 1999 16:13:21 UTC