zoukankan      html  css  js  c++  java
  • arcgis10 arcmap10插件监控打开和保存文档

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.InteropServices;
    using ESRI.ArcGIS.ADF.CATIDs;
    using ESRI.ArcGIS.esriSystem;
    using ESRI.ArcGIS.Framework;
    using ESRI.ArcGIS.ArcMapUI;

    namespace OpenSaveLogExtensionCS
    {
        /// <summary>
        /// Simple extension that logs message when document is opened and saved
        /// </summary>
        [Guid("7d868fd7-f986-4347-bc93-b79751e12def")]
        [ClassInterface(ClassInterfaceType.None)]
        [ProgId("OpenSaveLogExtensionCS.LogExtension")]
        public class LogExtension : IExtension, IPersistVariant
        {
            #region COM Registration Function(s)
            [ComRegisterFunction()]
            [ComVisible(false)]
            static void RegisterFunction(Type registerType)
            {
                // Required for ArcGIS Component Category Registrar support
                ArcGISCategoryRegistration(registerType);

                //
                // TODO: Add any COM registration code here
                //
            }

            [ComUnregisterFunction()]
            [ComVisible(false)]
            static void UnregisterFunction(Type registerType)
            {
                // Required for ArcGIS Component Category Registrar support
                ArcGISCategoryUnregistration(registerType);

                //
                // TODO: Add any COM unregistration code here
                //
            }

            #region ArcGIS Component Category Registrar generated code
            /// <summary>
            /// Required method for ArcGIS Component Category registration -
            /// Do not modify the contents of this method with the code editor.
            /// </summary>
            private static void ArcGISCategoryRegistration(Type registerType)
            {
                string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID);
                MxExtension.Register(regKey);
                GMxExtensions.Register(regKey);
                SxExtensions.Register(regKey);

            }
            /// <summary>
            /// Required method for ArcGIS Component Category unregistration -
            /// Do not modify the contents of this method with the code editor.
            /// </summary>
            private static void ArcGISCategoryUnregistration(Type registerType)
            {
                string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID);
                MxExtension.Unregister(regKey);
                GMxExtensions.Unregister(regKey);
                SxExtensions.Unregister(regKey);

            }

            #endregion
            #endregion
            private IApplication m_application;

            #region "Add Event Wiring for Open Documents"
            // Event member variables
            private IDocumentEvents_Event m_docEvents;

            // Wiring
            private void SetUpDocumentEvent(IDocument myDocument)
            {
                m_docEvents = myDocument as IDocumentEvents_Event;
                m_docEvents.OpenDocument += new IDocumentEvents_OpenDocumentEventHandler(OnOpenDocument);

                //Optional, new and close document events
                m_docEvents.NewDocument += new IDocumentEvents_NewDocumentEventHandler(OnNewDocument);
                m_docEvents.CloseDocument += new IDocumentEvents_CloseDocumentEventHandler(OnCloseDocument);
            }

            void OnOpenDocument()
            {
                System.Diagnostics.Debug.WriteLine("Open Document", "Sample Extension (C#)");
                string logText = "Document '" + m_application.Document.Title + "'"
                                + " opened by " + Environment.UserName
                                + " at " + DateTime.Now.ToLongTimeString();

                LogMessage(logText);
            }

            void OnCloseDocument()
            {
                System.Diagnostics.Debug.WriteLine("Close Document", "Sample Extension (C#)");
            }
            void OnNewDocument()
            {
                System.Diagnostics.Debug.WriteLine("New Document", "Sample Extension (C#)");
            }
            #endregion

            #region "IExtension Implementations"
            public string Name
            {
                get
                {
                    return "OpenSaveLogExtensionCS";
                }
            }

            public void Shutdown()
            {
                m_docEvents = null;
                m_application = null;
            }

            public void Startup(ref object initializationData)
            {
                m_application = initializationData as IApplication;
                SetUpDocumentEvent(m_application.Document);
            }
            #endregion

            #region "IPersistVariant Implementations"
            public UID ID
            {
                get
                {
                    UID extUID = new UIDClass();
                    extUID.Value = GetType().GUID.ToString("B");
                    return extUID;
                }
            }

            public void Load(IVariantStream Stream)
            {
                Marshal.ReleaseComObject(Stream);
            }

            public void Save(IVariantStream Stream)
            {
                System.Diagnostics.Debug.WriteLine("Save Document", "Sample Extension (C#)");
                LogMessage("Document '" + m_application.Document.Title + "'"
                                + " saved by " + Environment.UserName
                                + " at " + DateTime.Now.ToLongTimeString());

                Marshal.ReleaseComObject(Stream);
            }
            #endregion

            private void LogMessage(string message)
            {
                m_application.StatusBar.set_Message(0, message);
            }
        }
    }

    来自:http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/d/0001000004r1000000.htm

  • 相关阅读:
    每次运行caffe代码之前需要考虑修改的地方
    caffe solver 配置详解
    python获取当前文件路径以及父文件路径
    Python 文件夹及文件操作
    安装NVIDIA驱动时禁用自带nouveau驱动
    博客园转载其他博客园的文章:图片和源码
    分布式开放消息系统(RocketMQ)的原理与实践
    RocketMQ基本概念及原理介绍
    rocketmq 4.3.2 解决远程不能消费问题,解决未识别到公网IP问题
    osx免驱网卡推荐
  • 原文地址:https://www.cnblogs.com/gisoracle/p/2417073.html
Copyright © 2011-2022 走看看