开发Office COM Addin 的一点总结

       近期做了初浅地学习了在Visual Studio.Net 中开发Office COM Addin的方法,微软让这个工程的建立,管理相当简单,不少工作就自动完成了,所要做的,是实现Connect类的几个函数。
        这个几个函数,虽然要自己来实现,但其中几个对很多Addin来说差不多都是一样的。根据自己的想法,总结了一下其中几个函数的使用。
        Connect 继承于Extensibility.IDTExtensibility2类,需要实现以下五个函数。
  1. OnConnection: 装载插件到内存时处理(可以通过自动化在程序启动时自动装载插件)。
  2. OnDisconnection: 从内存中缷载插件时处理。
  3. OnAddinsUpdate: COM插件改变时处理。
  4. OnStartupComplete: 当应用程序启动时插件刚装载完成时处理。
  5. OnBeginShutdown: 当应用程序关闭时插件刚缷载完成时处理。

       但在一般编程中OnConnectionOnDisconnection是比较固定的,如下为两个比较典型的例子,基本上可以直接拿来用的。

public void OnConnection(object application,  Extensibility.ext_ConnectMode connectMode, 
                                      
object addInInst, ref System.Array custom)
  
{
    applicationObject 
= application;
    addInInstance 
= addInInst;
    
if(connectMode != Extensibility.ext_ConnectMode.ext_cm_Startup)
    
{
      OnStartupComplete(
ref custom);
    }

  }



public void OnDisconnection( Extensibility.ext_DisconnectMode disconnectMode, ref System.Array custom)
{
   
if (disconnectMode !=  Extensibility.ext_DisconnectMode.ext_dm_HostShutdown)
   
{
     OnBeginShutdown(
ref custom);
   }

   applicationObject 
= null;
}


      OnStartupComplete一般来说是最主要的一个函数,Addin的按钮,菜单等等控件的初始化和加载都是在这个函数里边完成的。OnBeginShutdown 主要用来清理各个控件从宿主程序中删除。


public void OnBeginShutdown(ref System.Array custom)
{
    
object missing = Missing.Value ;
    myButton.Delete(missing);
    myButton 
= null;
}



     OnAddinsUpdate 目前尚未用到过这个函数,对此不作说明。

     以上是我对做过的几个Addin的看法,会有不对的地方。

posted on 2005-04-02 22:16  我在等待  阅读(682)  评论(1)    收藏  举报