The OLE/COM Object Viewer
The OLE/COM Object Viewer is a developer and power user oriented
administration and testing tool. With The OLE/COM Object Viewer you can:
- Browse, in a structured way, all of the COM classes installed on your machine.
See the registry entries for each class in an easy to read format.
- Configure any COM class on your system.
This includes Distributed COM activation and security settings.
- Configure system wide COM settings, including
enabling or disabling Distributed COM.
- Test any COM class, simply by double clicking
on it's name. The list of interface that class supports will be
displayed. Double clicking on an interface entry allows you to
invoke a viewer that will "exercise" that interface.
- Activate COM classes locally or remotely. This is great for testing Distributed COM setups.
- View type library contents. Use this to figure out what methods, properties,
and events an ActiveX Control supports!
- Copy a properly formatted OBJECT tag to the clipboard for inserting
into an HTML document.
System Requriements
The OLE/COM Object Viewer requires either Windows 95 or Windows NT 4.0.
You must have also installed either Internet Explorer 3.0
or the ActiveX Software Development Kit.
This version does not run on Windows NT 3.5 or Windows NT 3.51, although earlier variations of the same
tool (it used to be called OLE2View) are available in the Win32 SDK and with
Visual C++.
Download Instructions
To download the OLE/COM Object Viewer, click on the link below that corresponds
to your processor architecture to download a self-extracting executable which will
allow you to specify where you want the component files placed.
x86 (Win95 and Windows NT)
(Builds for the MIPS, DEC Alpha, and PowerPC are not yet available).
What's new and different?
- New name. It used to be called Ole2View.
- New icon. Very important.
- Much improved UI, including the ability to toggle between "Expert" and "Novice" mode.
- Better categorization/organization of various
object types. Much easier to find the object you're looking for.
(Still no find command though).
- Fully supports the new Component Categories
specification.
- Interface viewers are now COM objects (who
woulda' thought?). Viewers for IDataObject, IDispatch, IPersistXXX,
ITypeLib and ITypeInfo are provided. You can write your own (see
the IDL file for the IInterfaceViewer interface below). There
is a default interface viewer for IUnknown, so that no matter
what interface you click on you'll at least get the default (taking
advantage of the default class capabilities of Component
Categories).
- The IDataObject viewer (called the Uniform
Data Transfer viewer) has been simplified.
- The ITypeLib viewer is very cool. Instead
of trying to cram the contents of a typelib in a dialog box, it
is a typelib decompiler. So that output window of the typelib
viewer shows the .ODL source for the given typelib (or the part
you have selected). Check it out!
- The registry view (Right hand side) now
shows *all* the relevant registry information, including named
values of keys like "ApartmentModel".
- Context menus (Right mouse buttons work).
- Multiple objects can be activated simultaneously
(bold items are currently active).
- Drag & Drop works. Drop a filename
on The OLE/COM Object Viewerand it creates a file moniker and binds to it.
- Supports Distributed COM!
You can now activate remote servers one
of two ways:
- Via CoGetClassObject: Right click on an
object in the left hand pane and you'll see a "Create Instance
On..." menu item. Choose this and you can enter a machine
name. To activate an object on \\joeblow, you'd enter "joeblow"
and hit OK.
- Via a file moniker bind and ActivateAtStorage:
Use the File.Bind To File menu item and specify the UNC name of
the file you want to bind to (e.g. \\joeblow\c\docs\hehe.doc).
- You can also specify any moniker display name on the command line.
- The right hand pane now contains tabs for
administering COM class information. You can set Distributed COM
options and security as well as change keys like LocalServer32.
What's to come (and what's broken)?
- The ability to set the "RunAs" Distributed COM key to a named user is not supported.
- The tab key does not switch between panes.
- The administration tabs do not appear for Application ID's listed in the AppID key.
- There's no online help.
IInterfaceViewer Specification
The OLE/COM Object Viewer supports plug-in interface viewers. If you have a COM interface you
have designed, or would like to be able to "party" on some existing interface
you can develop your own interface viewers. Simply create an in-process COM server which
implements the IInterfaceViewer interface and have it register the following information:
HKCR\Interface\{the IID you want to view}\OleViewerIViewerCLSID = {your clsid}
You should also use the Component Category Manager to register your viewer's CLSID as
implementing the OLEViewer Interface Viewer CATID ({64454F82-F827-11CE-9059-080036F12502}).
IDL for IInterfaceViewer
// iview.idl
//
// Interface definitions for Ole2View Interface Viewers
//
import "unknwn.idl";
// DEFINE_GUID(IID_IInterfaceViewer,0xfc37e5ba,0x4a8e,0x11ce, 0x87,0x0b,0x08,0x00,0x36,0x8d,0x23,0x02);
//
// IInterfaceViewer::View can return the following SCODEs
//
// S_OK
// E_INVALIDARG
// E_UNEXPECTED
// E_OUTOFMEMORY
//
[
uuid(fc37e5ba-4a8e-11ce-870b-0800368d2302),
object
]
interface IInterfaceViewer : IUnknown
{
HRESULT View([in]HWND hwndParent, [in]REFIID riid, [in]IUnknown* punk);
}