iaccessible2/comproxydll

IAccessible2 COM proxy stub DLL

 

We have provided an IAccessible2 COM proxy stub DLL, IAccessible2Proxy.DLL as well as the files necessary for building it from the IAccessible2 IDL file. The proxy DLL is needed so the default marshaler has a description of the IAccessible2 interfaces.

Typically an application implementing the IAccessible2 interfaces would provide a proxy DLL with the application but since IAccessible2 is a standard used by more than one application it would be best if applications do not manage this DLL. This is to eliminate the case of two ore more applications installing a proxy DLL for IAccessible2 and then having one application’s uninstall remove the DLL needed by the other applications.

After discussion within the IAccessible2 community it was felt that the ATs should manage the DLL, i.e. copying it to the system32 directory and registering it at install time, but not removing or unregistering it at uninstall time. There are far fewer ATs than applications and thus a smaller group of developers to coordinate with.

You may choose to use the provided IAccessible2Proxy.dll file, or build your own.

If you build your own DLL, the following files are provided and can be used with Visual C++ 2008 Express Edition.

  • IAccessible2Proxy.def
  • IAccessible2Proxy.rc
  • IAccessible2Proxy.sln
  • IAccessible2Proxy.vcxproj
  • resource.h

You can download those five files from this directory. If you prefer, you can download just the DLL.

IAccessible2Proxy.rc and resource.h are used to provide the DLL version information so that setup systems can detect the DLL version number and so the version data will appear in the file Explorer properties sheet.

Whenever the DLL is updated, such as when a new or changed interface is added, the file and product version fields of the resource file view should be updated, e.g. from 1,0,0,0 to 1,1,0,0. MSDN info on the MAKEDLLVERULL Macro indicates that these four fields are major version, minor version, build number, and QFE (Quick Fix Engineering, aka Service Pack) number. The Visual C++ Express Editions do not come with a resource editor. ResEdit can be used to edit the resource (rc) file.

Once you download the five build files mentioned above you will also need to copy the merged IAccessible2 IDL file, ia2_api_all.idl, into the same directory and then build the project.

Then install the DLL to the Windows system32 directory and register it using the following command prompt:

regsvr32 IAccessible2Proxy.dll

Or for portable ATs, i.e. ATs that are not installed on the system, you would use in-process injection and CoRegisterClassObject and CoRegisterPSClsid.

Note: You need to run regsvr32 with administrator privileges. On later Windows systems like Vista and Windows 7 applications are not given administrator privileges automatically when running in an account with administrator privileges so for example, on Windows 7, from the start menu locate the command prompt, then right click on the menu item and select run as administrator.

For some background information about creating a proxy DLL, see “COM proxy stub dll and why do you need it” located at https://blogs.msdn.com/eldar/archive/2006/02/28/540981.aspx.

There are files for use with other versions of Visual Studio as well as a makefile in bug 110.

Groups: