This document is archived and information here might be outdated.  Recommended version.

Accessing application and document objects (ArcObjects .NET 10.8 SDK)
ArcObjects Help for .NET developers > ArcObjects Help for .NET developers > Developing with ArcGIS > Learning ArcObjects > Extending ArcObjects > Application framework customizations > Accessing application and document objects

Accessing application and document objects

One of the first tasks when customizing an ArcGIS Desktop application is to access the application or document object. Together, these objects act as the central point of entry to other objects in the ArcGIS system. This topic shows common ways of getting a reference to the application object in your .NET custom components.

In this topic

About accessing application and document objects

The application framework provides ways to customize and extend the user interface (UI) for ArcGIS Desktop applications. You can access the application object with the methods in the following table:
Method and parameter
Command, Tool, and ToolControl
ICommand.OnCreate() hook parameter
MultiItem command
IMultiItem.OnPopup() hook parameter
IExtension.Startup() initializationData parameter
Dockable window
With certain customizations, you get a document object directly. In these cases, you can access the application object by casting the document object to IDocument and accessing the parent property. See the following table:
Method and parameter
Contents View (ArcMap)
IContentsView.Activate() document parameter
Contents View (ArcScene)
ISxContentsView.Activate() document parameter
Contents View (ArcGlobe)
IContentsView2.BasicActivate() document parameter
See the following code example:
IMxDocument mapDocument=parameter;
IDocument document=mapDocument as IDocument;
IApplication application=document.Parent;
Dim mapDocument As IMxDocument=parameter
Dim document As IDocument=CType(mapDocument, IDocument)
Dim application As IApplication=document.Parent

Getting a reference to the application object

You can also get a reference to the application object indirectly from other custom component implementations. For example, if you write an Editor extension, IExtension.Startup gives you a reference to the Editor object, then you can use the IEditor.Parent property to get to the IApplication object.
As a last resort, if you can't get a reference to the application object in your code, you can instantiate a new AppRef object. Once you get the application object, you can access the current document and templates, status bar, selected tool, and application extensions.
To programmatically find an application extension, use the IApplication.FindExtensionByCLSID method. This method takes the unique identifier (UID) of the extension as the input parameter. A list of the Esri extension UIDs is provided in the Help system.

Development licensing Deployment licensing
ArcGIS Desktop Basic ArcGIS Desktop Basic
ArcGIS Desktop Standard ArcGIS Desktop Standard
ArcGIS Desktop Advanced ArcGIS Desktop Advanced