好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

常用软件扫描(SoftwareToScan)

常用软件扫描(SoftwareToScan)

如果你还不知道CodeLove,点击【 一起来编程吧,CodeLove初版发布 】.

那么如何编写插件呢?下面就简单介绍如果编写SoftwareToScan插件。该插件我们可以在设置窗口看到:

那么如何编写这个插件呢?下面一步步介绍如何实现插件并且如何扫描出系统中常用的软件吧,相信对大家编写插件程序以及扫描常用软件方面都会有帮助,不过如果您有好的建议和意见,请回复,最后会给出插件源码。

 

1.引用ExtensionsFramework

什么是ExtensionsFramework?这是基于CodeLove编写插件的中间组件。我们可以在程序安装目录找到,即“ExtensionsFramework.dll”。你也可以 点此下载ExtensionsFramework.dll 。

2.实现ITool接口

首先介绍下ITool接口,目前具有以下属性和行为:

    1:   using  System;
    2:   using  System.Collections.Generic;
    3:   using  System.Text;
    4:   using  System.ComponentModel;
    5:   
    6:   namespace  ExtensionsFramework.Interfaces
    7:  {
    8:       public   interface  ITool
    9:      {
   10:           /// <summary> 
   11:           /// 插件名 
   12:           /// </summary> 
   13:           string  Name { get;}
   14:           /// <summary> 
   15:           /// 描述 
   16:           /// </summary> 
   17:           string  Description { get;}
   18:           /// <summary> 
   19:           /// 作者 
   20:           /// </summary> 
   21:           string  Author { get;}
   22:           /// <summary> 
   23:           /// 版本 
   24:           /// </summary> 
   25:           string  Version { get;}
   26:           /// <summary> 
   27:           /// 初始化 
   28:           /// </summary> 
   29:           void  Initialize();
   30:           /// <summary> 
   31:           /// 执行 
   32:           /// </summary> 
   33:           /// <param name="args"></param> 
   34:           void  Execute( string [] args);
   35:           /// <summary> 
   36:           /// 热键 
   37:           /// </summary> 
   38:          System.Windows.Forms.Shortcut HotKey { get; set;}
   39:           /// <summary> 
   40:           /// 启动关键字 
   41:           /// </summary> 
   42:           string  Alias { get; set;}
   43:           /// <summary> 
   44:           /// 是否随软件一起启动 
   45:           /// </summary> 
   46:           bool  AutoStart { get; set; }
   47:      }
   48:  }

然后我们需要实现这个接口,如:

    1:   using  System;
    2:   using  System.Collections.Generic;
    3:   using  System.Linq;
    4:   using  System.Text;
    5:   using  ExtensionsFramework.Interfaces;
    6:   using  ExtensionsFramework.Entities;
    7:   using  System.Windows.Forms;
    8:   using  System.IO;
    9:   using  IWshRuntimeLibrary;
   10:   namespace  SoftwareToScan
   11:  {
   12:       public   class  SoftwareToScan : ITool
   13:      {
   14:           private   string  m_Alias =  "SoftwareToScan" ;
   15:           private  Shortcut m_HotKey;
   16:           #region  ITool 成员
   17:   
   18:           string  ITool.Name
   19:          {
   20:              get {  return   "SoftwareToScan" ; }
   21:          }
   22:   
   23:           string  ITool.Description
   24:          {
   25:              get {  return   "扫描并添加常用的软件" ; }
   26:          }
   27:   
   28:           string  ITool.Author
   29:          {
   30:              get {  return   "liwq" ; }
   31:          }
   32:   
   33:           string  ITool.Version
   34:          {
   35:              get {  return  System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); }
   36:          }
   37:   
   38:           void  ITool.Initialize()
   39:          {
   40:               //System.Diagnostics.Debug.Write("SoftwareToScan初始化成功完成......"); 
   41:          }
   42:   
   43:           void  ITool.Execute( string [] args)
   44:          {
   45:               new  Scan().Show();
   46:          }
   47:   
   48:   
   49:   
   50:          System.Windows.Forms.Shortcut ITool.HotKey
   51:          {
   52:              get
   53:              {
   54:                   return  m_HotKey;
   55:              }
   56:              set
   57:              {
   58:                  m_HotKey =  value ;
   59:              }
   60:          }
   61:   
   62:           string  ITool.Alias
   63:          {
   64:              get
   65:              {
   66:                   return  m_Alias;
   67:              }
   68:              set
   69:              {
   70:                  m_Alias =  value ;
   71:              }
   72:          }
   73:   
   74:           #endregion 
   75:   
   76:   
   77:           bool  ITool.AutoStart { get; set; }
   78:      }
   79:  }

通过实现接口,我们告诉了CodeLove关于这个插件的以下信息:

3.构思概述

之前没做过常用软件扫描,设想了下,思路如下,如果你有好的建议, 请回复 。

1.从快捷方式获取。 个人认为是最好的方式,确实也能取到比较好的数据,包括软件描述都有,而且快捷方式我们可以从开始菜单目录、桌面去抓取,但是实际做的时候,发现一个很大的问题,很多目录访问权限不够,不管怎么配置甚至管理员运行,都没权限,无奈之下,只能说能抓一点是一点吧。

2.从注册表获取。 注册表我分析了下,目前发现两个路径下可以获取到软件的数据,“ HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall“和”HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths“。前一个项,是添加/删除程序面板里面显示的内容,貌似相对比较全,后一项是貌似是程序别名,以前为了方便在运行里面直接运行软件,经常在里面添加项的。也就是这个项的名字,可以直接在运行窗口输入以启动软件的。如:

常用的有Excel、devenv(VS)、Outlook、QvodPlayer(你懂的)等等。你也可以自己添加一些项,比如把QQ加进去。

3.获取常用软件并设置属性。 获取了一堆东西,发现很多并不能用上,于是得设置一些匹配数据,用于匹配常用软件,添加类如下:

    1:   using  System;
    2:   using  System.Collections.Generic;
    3:   using  System.Linq;
    4:   using  System.Text;
    5:   
    6:   namespace  SoftwareToScan
    7:  {
    8:       public   class  CommonlyUsedSoftwareSettings
    9:      {
   10:           /// <summary> 
   11:           /// 搜索的关键字 
   12:           /// </summary> 
   13:           public   string  LikeKeyWord { get; set; }
   14:           /// <summary> 
   15:           /// 搜索模式 
   16:           /// </summary> 
   17:           public  LikeMode LikeMode { get; set; }
   18:           /// <summary> 
   19:           /// 需要拼接的Exe名称和路径 
   20:           /// </summary> 
   21:           public   string  ContactExePath { get; set; }
   22:           /// <summary> 
   23:           /// 关键字,没有表示不修改 
   24:           /// </summary> 
   25:           public   string  KeyWord { get; set; }
   26:           /// <summary> 
   27:           /// 描述 
   28:           /// </summary> 
   29:           public   string  Description { get; set; }
   30:           /// <summary> 
   31:           /// 要求路径中必须存在本关键字 
   32:           /// </summary> 
   33:           public   string  PathContains { get; set; }
   34:      }
   35:  }

设置匹配信息如下:

    1:  CommonlyUsedSoftwareSettingsLst =  new  List<CommonlyUsedSoftwareSettings>()
    2:  {
    3:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "Lenovo YouCam" ,LikeMode=LikeMode.Equals,ContactExePath= "YouCam.exe" ,KeyWord= null },
    4:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "联想 一键恢复" ,LikeMode=LikeMode.Equals,ContactExePath= "OneKey Recovery.exe" ,KeyWord= null ,Description= "联想 一键恢复" },
    5:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "Energy Management" ,LikeMode=LikeMode.Equals,ContactExePath= "Energy Management.exe" ,KeyWord= null ,Description= "联想 电源管理" },
    6:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "Microsoft Visual Studio 2010" ,LikeMode=LikeMode.StartWidth,ContactExePath= @"Common7\IDE\devenv.exe" ,KeyWord= "VS" ,Description= ".NET编程工具" ,PathContains= "Microsoft Visual Studio" },
    7:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "腾讯视频" ,LikeMode=LikeMode.Equals,ContactExePath= @"QQLive.exe" ,KeyWord= null ,Description= "腾讯视频" },
    8:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "QQ音乐" ,LikeMode=LikeMode.StartWidth,ContactExePath= @"QQMusic.exe" ,KeyWord= null ,Description= "QQ音乐" },
    9:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "TeamViewer" ,LikeMode=LikeMode.StartWidth,ContactExePath= @"TeamViewer.exe" ,KeyWord= null ,Description= "一款流行的远程协助软件" },
   10:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "腾讯QQ" ,LikeMode=LikeMode.StartWidth,ContactExePath= @"QQProtect\Bin\QQProtect.exe" ,KeyWord= "QQ" ,Description= "QQ" },
   11:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "必应缤纷桌面" ,LikeMode=LikeMode.Equals,ContactExePath= @"BingDesktop.exe" ,KeyWord= null ,Description= "必应缤纷桌面" },
   12:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "联想通行证服务" ,LikeMode=LikeMode.Equals,ContactExePath= @"LPS.exe" ,KeyWord= null ,Description= "联想通行证服务" },
   13:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "必应缤纷桌面" ,LikeMode=LikeMode.Equals,ContactExePath= @"BingDesktop.exe" ,KeyWord= "BingDesktop" ,Description= "必应缤纷桌面" },
   14:       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
   15:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "7zFM" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "7Zip" },
   16:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "devenv" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= ".NET编程工具(VS)" },
   17:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "excel" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= null },
   18:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "GROOVE" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "Microsoft SharePoint Workspace" },
   19:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "IEXPLORE" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "IE浏览器" },
   20:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "infopath" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "infopath" },
   21:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "MobileWiFi" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "MobileWiFi:无线3G路由管理工具" },
   22:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "mplayer" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "微软媒体播放器" },
   23:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "MSACCESS" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "ACCESS" },
   24:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "MSPUB" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "Microsoft Publisher" },
   25:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "OneNote" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "OneNote" },
   26:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "OUTLOOK" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "OUTLOOK" },
   27:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "powerpnt" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "PPT" },
   28:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "PowerShell" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "PowerShell" },
   29:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "QvodPlayer" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "QvodPlayer:快播" },
   30:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "SnippingTool" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "系统自带截屏工具" },
   31:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "vmware" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "vmware虚拟机" },
   32:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "Winword" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "Word" },
   33:       new  CommonlyUsedSoftwareSettings(){LikeKeyWord= "WORDPAD" ,LikeMode=LikeMode.Equals,ContactExePath= null ,Description= "写字板" },
   34:  };

如果发现本插件找不到你需要的软件,请把软件信息发我。3Q。

说到这里,基本上构思说的差不多了,关键编码也很简单,就不细说了。待会直接给出源码下载。

4.插件目录说明

写好之后,如何测试呢?找到CodeLove安装目录,找到“Plus”目录,把你的插件dll丢进去就可以。然后CodeLove就可以发现你的插件了。

5.尾声

先给出下载链接: 点此下载CodeLove , 点此下载SoftwareToScan源码 。

请不要吝惜点击右下角的推荐,你的支持是我的动力。 代码还存在需要不足的地方,请不要吝惜你的意见与建议。 如有问题或不足或建设性意见与建议,可以回复本帖或给我发邮件,由于一直比较忙,回复比较缓慢。邮箱地址: CodeLove1314@live.cn 现在插件还很少,需要你我共同努力。有兴趣的可以试试编写以下插件:Google翻译、正则表达式编辑器、JS编辑器、JSON格式化工具、采色器、WebServices测试工具等等。 准备编写一个全局的鼠标手势插件,为什么要编写?之前搜狗输入法自带的扩展鼠标手势很好用,但是那货老是偷偷下载搜狗浏览器,一怒之下,卸了。目前找了不少资料,但是还存在不少难点,如果你有这方面的资料或信息,请不吝赐教。


静听鸟语花香,漫赏云卷云舒。一花一世界,一树一菩提,一码一人生。

 

 

标签:  CodeLove

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于常用软件扫描(SoftwareToScan)的详细内容...

  阅读:50次