如果你还不知道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测试工具等等。
  • 准备编写一个全局的鼠标手势插件,为什么要编写?之前搜狗输入法自带的扩展鼠标手势很好用,但是那货老是偷偷下载搜狗浏览器,一怒之下,卸了。目前找了不少资料,但是还存在不少难点,如果你有这方面的资料或信息,请不吝赐教。

转载于:https://www.cnblogs.com/codelove/archive/2013/01/08/2850875.html

为CodeLove编写插件——常用软件扫描(SoftwareToScan)相关推荐

  1. mac电脑macOS常用软件必备软件命令行安装,史上最全mac插件2

    mac电脑macOS常用软件必备软件命令行安装,史上最全mac插件1见博客链接 mac电脑macOS常用软件必备软件命令行安装,史上最全mac插件  是我的第一篇文章,非常全,不敢轻易编辑.你懂的.. ...

  2. bim技术及常用软件简介,revit插件免费的有哪些,付费的有哪些?

    今天简单的介绍一下关于bim技术的应用,bim目前可算是热门的技术行业,目前我国的正在推行bim技术在建筑行业的发展,如果你选择了bim那意味着你以后不会失业,因为我国目前关于bim方面的人才还是比较 ...

  3. PS、AE、PR、CAD、SPSS、3D Max、Maya、Office 等常用软件插件合集

    去年的时候小资源当了一阵的设计公司运营,趁着摸鱼的同时,也会给公司搜集各种好用的插件 ​ 毕竟插件谁用谁知道,这是可以大大提高工作效率的东西呀 所以最近小资源又花了一点时间来给大家收集整理出了此次推文 ...

  4. 好物推荐:2020 年常用软件锦集!帮你解决 90% 的软件问题

    经过多年的使用和对比,我总结了 40 款常用软件,预计能帮你解决 90% 的软件选择问题.人生苦短,如果你不知道使用什么样的软件,你可以直接使用我总结的这份软件选择极简指南. 一.软件入选的标准是什么 ...

  5. 【Linux入门学习之】Ubuntu常用软件

    [Linux入门学习之]Ubuntu常用软件 速配指南之软件参考 本文定位:作为速配指南的补充,列出国内用户比较常用的软件.请将论坛软件推荐版块的内容逐步转移至wiki,而非本文. 本文作用:为新手指 ...

  6. 【Linux入门学习之】Ubuntu常用软件 速配指南之软件参考

    [Linux入门学习之]Ubuntu常用软件 速配指南之软件参考 本文定位:作为速配指南的补充,列出国内用户比较常用的软件.请将论坛软件推荐版块的内容逐步转移至wiki,而非本文. 本文作用:为新手指 ...

  7. Ubuntu:常用软件和设置

    安装Linux的Windows子系统 启用"用于Linux的Windows子系统"可选功能并重新启动. 以管理员身份打开PowerShell并运行: Enable-WindowsO ...

  8. Ubuntu系统安装及常用软件设置

    Ubuntu系统安装及常用软件设置(2020年10月12日) 情况: 安装Ubuntu系统,并安装常用办公软件:jre.QQ_for wine.微信_for wine.企业微信_for wine.WP ...

  9. mac下后端开发常用软件

    简介 换了台macbook,接下来分享下我在mac里安装的常用软件,也方便自己以后重装 Intellij IDEA Java开发神器,开发效率高,功能非常强大,社区版阉割了太多功能,满足不了开发需求, ...

最新文章

  1. windows 上rsync客户端使用方法
  2. C++ error LNK2019: 无法解析的外部符号 错误解决方案
  3. 【数据结构与算法】之深入解析“删除链表的倒数第N个结点”的求解思路与算法示例
  4. 工作284:理解绑定逻辑
  5. Java开发神器Lombok使用详解
  6. C++类中protected访问权限问题
  7. 手工编程是指利用计算机完成,西安交通大学17年3月课程考试《CAD CAM》作业考核试题...
  8. 【mongodb】couldn't connect to server 127.0.0.1:27017 (127.0.0.1)
  9. inventor中齿条怎么画_涨知识干货|瀑布怎么画?山水画刀画中的八种分类
  10. Android开发笔记(一)手势识别
  11. 【OCR技术系列之三】大批量生成文字训练集
  12. 神经网络入门之RNN(三)
  13. 超实用带格子的便签 便签格子的用法
  14. Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南
  15. 英伟达两个最新元宇宙布局
  16. 计算机视觉入门之图像处理<六>:图像锐化处理
  17. 降噪软件让NVH诊断更轻松
  18. idea2020.3配置点击mapper中的方法跳转到对应得xml中
  19. 数据分析- 2012美国总统竞选赞助数据分析
  20. 关于UEditor与Bootstrap结合使用时产生的工具栏边距错乱现象的解决方法

热门文章

  1. vim配置及插件安装管理
  2. 如何在linux系统下对文件夹名有空格的文件
  3. mysql操作语句now_【MySQL数据库开发之二】MySQL 基础语句的书写与操作!
  4. c++11 Type Alias
  5. python 空指针_Python ctypes模块:扩展指针数组时进行NULL指针访问
  6. 在 Java CAPS 中使用 LDAP
  7. 嵌入式系统开发怎样快速度入门
  8. mybatis 中SQLServer 和 mysql 模糊查询 不同点
  9. 观看TED演讲(计算机的发明和发展)感受
  10. python 菜鸟入门