常用软件扫描(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)的详细内容...