如果你還不知道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測試工具等等。
- 准備編寫一個全局的鼠標手勢插件,為什么要編寫?之前搜狗輸入法自帶的擴展鼠標手勢很好用,但是那貨老是偷偷下載搜狗瀏覽器,一怒之下,卸了。目前找了不少資料,但是還存在不少難點,如果你有這方面的資料或信息,請不吝賜教。



