private void ExtensionList(IApplication application) { List < string > loadedExtensions = new List < string > (); List < string > unloadedExtensions = new List < string > (); //All extensions returned by extension manager have been loaded at startup. IExtensionManager regularExtManager = application as IExtensionManager; for (int i = 0; i < regularExtManager.ExtensionCount; i++) { IExtension ext = regularExtManager.get_Extension(i); loadedExtensions.Add(ext.Name); } //Use IsLoaded to test if a JIT extension has already been loaded by request. IJITExtensionManager jitExtManager = application as IJITExtensionManager; for (int i = 0; i < jitExtManager.JITExtensionCount; i++) { UID extID = jitExtManager.get_JITExtensionCLSID(i); if (jitExtManager.IsLoaded(extID)) { IExtension ext = application.FindExtensionByCLSID(extID); loadedExtensions.Add(ext.Name); } else //Just show the extension ID. { unloadedExtensions.Add(extID.Value.ToString()); } } //Print extension information. Console.WriteLine("Extensions loaded in Application:"); foreach (string ext in loadedExtensions) Console.WriteLine("\t" + ext); Console.WriteLine("CLSID of extensions haven't been loaded yet:"); foreach (string extID in unloadedExtensions) Console.WriteLine("\t" + extID); }
调用
private void GetEditorExtension(IApplication application) { //Find extension by CLSID or ProgId. UID extensionID = new UIDClass(); extensionID.Value = "esriEditor.Editor"; //{F8842F20-BB23-11D0-802B-0000F8037368}. IExtension editExtension = application.FindExtensionByCLSID(extensionID); }