為CodeLove編寫插件——常用軟件掃描(SoftwareToScan)


如果你還不知道CodeLove,點擊【一起來編程吧,CodeLove初版發布】.

那么如何編寫插件呢?下面就簡單介紹如果編寫SoftwareToScan插件。該插件我們可以在設置窗口看到:

image

那么如何編寫這個插件呢?下面一步步介紹如何實現插件並且如何掃描出系統中常用的軟件吧,相信對大家編寫插件程序以及掃描常用軟件方面都會有幫助,不過如果您有好的建議和意見,請回復,最后會給出插件源碼。

 

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關於這個插件的以下信息:

image

3.構思概述

之前沒做過常用軟件掃描,設想了下,思路如下,如果你有好的建議,請回復

1.從快捷方式獲取。個人認為是最好的方式,確實也能取到比較好的數據,包括軟件描述都有,而且快捷方式我們可以從開始菜單目錄、桌面去抓取,但是實際做的時候,發現一個很大的問題,很多目錄訪問權限不夠,不管怎么配置甚至管理員運行,都沒權限,無奈之下,只能說能抓一點是一點吧。

2.從注冊表獲取。注冊表我分析了下,目前發現兩個路徑下可以獲取到軟件的數據,“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall“和”HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths“。前一個項,是添加/刪除程序面板里面顯示的內容,貌似相對比較全,后一項是貌似是程序別名,以前為了方便在運行里面直接運行軟件,經常在里面添加項的。也就是這個項的名字,可以直接在運行窗口輸入以啟動軟件的。如:

image

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM