为CodeLove编写插件——常用软件扫描(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測試工具等等。
- 準備編寫一個全局的鼠標手勢插件,為什么要編寫?之前搜狗輸入法自帶的擴展鼠標手勢很好用,但是那貨老是偷偷下載搜狗瀏覽器,一怒之下,卸了。目前找了不少資料,但是還存在不少難點,如果你有這方面的資料或信息,請不吝賜教。
轉載于:https://www.cnblogs.com/codelove/archive/2013/01/08/2850875.html
總結
以上是生活随笔為你收集整理的为CodeLove编写插件——常用软件扫描(SoftwareToScan)的全部內容,希望文章能夠幫你解決所遇到的問題。