zoukankan      html  css  js  c++  java
  • (学)关于开发插件过程中的几点事项

    纯属个人工作记录。

    1、插件OnConnection事件执行两次,结果导致其中的部份关联事件的方法执行了多次,学习http://sifang2004.cnblogs.com/archive/2006/06/26/436178.html,加上了 if (xxxxxxxxxxxx)这样一行代码问题解决。   

    代码
    1 public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
    2 {
    3     _applicationObject = (DTE2)application;
    4     _addInInstance = (AddIn)addInInst;
    5     if (connectMode == ext_ConnectMode.ext_cm_AfterStartup || connectMode == ext_ConnectMode.ext_cm_Startup)
    6     {
    7        //事件关联代码
    8     }
    9 }

    2、插件需要以管理员的身份执行,但通过插件判断提示VS需要以管理身份运行后原来所打开的VS未能关闭。

         由原来的

         VistaSecurity.RestartElevated();
         Environment.Exit(0);

         改成异步后问题解决。

         AsyncEventHandler asy = new AsyncEventHandler(VistaSecurity.RestartElevated);
         asy.Invoke();
         Environment.Exit(
    0);

    代码
    if (VistaSecurity.IsAdmin())
    {
       RegistryKey key 
    = Registry.ClassesRoot.OpenSubKey(@"RegistKey\" + ProductName, true);
       
    try
       {
           key 
    = Registry.ClassesRoot.CreateSubKey(@"RegistKey\" + ProductName);
           key.SetValue(ActiveCode, strKey);
       }
       
    finally
       {
           key.Close();
       }
    }
    else
    {
       AsyncEventHandler asy 
    = new AsyncEventHandler(VistaSecurity.RestartElevated);
       asy.Invoke();
       Environment.Exit(
    0);
    }


     
    public delegate void AsyncEventHandler();

    3、.net平台生来就注定程序员写出来的代码没有任何安全可言,太可怕了。

    4、补充:为什么开发的插件中某些事件未能执行?

        参见 http://social.msdn.microsoft.com/Forums/en-IE/vsx/thread/38381610-398a-42dd-8611-f6d9a596d1fa

  • 相关阅读:
    Informatica_(6)性能调优
    Informatica_(5)高级应用
    Informatica_(4)工作流
    Informatica_(3)组件
    Informatica_(2)第一个例子
    Informatica_(1)安装
    Linux_(4)Shell编程(下)
    Linux_(3)Shell编程(上)
    Linux_(2)基本命令(下)
    B
  • 原文地址:https://www.cnblogs.com/spymaster/p/1630241.html
Copyright © 2011-2022 走看看