zoukankan      html  css  js  c++  java
  • 用C#写vs插件中的一些Tip

    最近用C#写了一个vs的插件,主要功能是插入标准的注释段和一些常用的代码段。在开发过程中,遇到了一些问题,也翻阅了一些资料,做了一番研究。这里对其中的一些小问题做一个简单的纪录,希望能够有所帮助。

    (1)在OnConnection中,判断connectMode时,一定要加上ext_cm_AfterStartup

       if(connectMode == Extensibility.ext_ConnectMode.ext_cm_UISetup
        || connectMode == Extensibility.ext_ConnectMode.ext_cm_Startup
        || connectMode == Extensibility.ext_ConnectMode.ext_cm_AfterStartup) // this line will work when u choose addin in addin manager
    这样子,在vs的Addin Manager中选中插件时,插件才会重新显示出来,一般的范例中,只有前两个判断

    (2)QueryState中,设置state时,要使用下面语句

        if( 是你加入的command )
        {
         if( 满足显示的条件 )
          status = (vsCommandStatus)vsCommandStatus.vsCommandStatusSupported|vsCommandStatus.vsCommandStatusEnabled;
         else
          status = (vsCommandStatus)vsCommandStatus.vsCommandStatusSupported;
        }
        else
         status = (vsCommandStatus)vsCommandStatus.vsCommandStatusUnsupported;
    这样做,才能在条件不满足时,插件的菜单变灰

    (3)判断代码窗口存在的方法是

    (applicationObject.ActiveWindow != null) && (applicationObject.ActiveWindow.Type == vsWindowType.vsWindowTypeDocument)

    就是说当前有活动窗口,而且其类型是文档类型

    (4)在文档窗口插入字符的方法是

       TextSelection ts = (TextSelection)applicationObject.ActiveDocument.Selection;
       EditPoint ep = ts.ActivePoint.CreateEditPoint();
         
       ep.Insert(strCode);
    当然,还可以调用EditPoint的其它方法,来实现删除,替换等等

    差不多就酱紫了,感觉用C#来做插件程序好简单啊,同时感到微软设计的对象模型用起来真是舒服,平时开发时如果能够自己设计出这么好的系统,该有多好阿,哈哈

  • 相关阅读:
    七月二十六学习报告
    学习笔记167—circos 可视化手册【fonts 篇】
    学习笔记166—Circos增加区块属性【highlight 属性】
    学习笔记165—Circos入门总结【for Brain Network】
    iOS 逆向工程(十三)之加壳与脱壳/砸壳
    iOS 逆向工程(十二)之class-dump工具使用
    iOS 逆向工程(十一)之Reveal工具使用
    iOS 逆向工程(十)之Cytript通用语法
    iOS 逆向工程(九)之解决iOS终端的中文乱码
    iOS 逆向工程(八)之sh脚本文件处理重复性工作
  • 原文地址:https://www.cnblogs.com/twttafku/p/1044025.html
Copyright © 2011-2022 走看看