今天給大家分享一個(gè)我做的小工具,可以自定義擴(kuò)展右鍵菜單的功能來提高工作效率,效果圖如下:
如上圖,右鍵菜單多了幾個(gè)我自定義的菜單:
-
復(fù)制文件路徑
-
復(fù)制文件夾路徑
-
我的工具箱 <走配置文件動(dòng)態(tài)創(chuàng)建子菜單,下面會(huì)講>
我上圖是在 win10 操作系統(tǒng)下演示的,在 win11 系統(tǒng)也測試可用。
源碼和工具包已經(jīng)開源在 github
-
https://github.com/yuzd/WindowsExplorerExtensions
微軟MVP實(shí)驗(yàn)室研究員
俞正東
微軟最有價(jià)值專家(MVP),.NET 技術(shù)專家,熱愛開源,關(guān)注并喜歡研究前沿技術(shù),熱衷于技術(shù)和經(jīng)驗(yàn)分享,長期撰寫技術(shù)博客,活躍于開源社區(qū)。
如何安裝
軟件包下載后,解壓后:
-
windows-explorer-ext 目錄是安裝擴(kuò)展文件用的
-
30594988.csv 是測試 csv 轉(zhuǎn) excel 的 demo 文件
-
csv2xlsx.exe 是我開發(fā)的一個(gè) netcore 獨(dú)立打包的 csv 轉(zhuǎn) excel 的執(zhí)行文件
csv2xlsx 的源碼地址:?
-
https://github.com/yuzd/Exporter/tree/master/ConsoleApp
是基于我開源的各種類型轉(zhuǎn)化封裝庫,比如 csv,xlsx,json,list 相互轉(zhuǎn)化。
開源地址:
-
https://github.com/yuzd/Exporter
有人可能會(huì)問 ,如果電腦安裝了 office 的話,直接 csv 就可以打開為 excel 啊, 但是默認(rèn)的雙擊 csv 以 excel 方式打開,對(duì)于是大數(shù)字會(huì)顯示成下面這樣。
所以我想要讓 csv 的內(nèi)容全部以字符串類型展示(就是上面 csv3xlsx 的功能了)
開始安裝
進(jìn)入解壓后的 windows-explorer-ext 目錄
-
ServerManager.exe 安裝擴(kuò)展用的
-
menu.txt 動(dòng)態(tài)菜單配置文件
-
WindowsExplorerExtentions.dll 擴(kuò)展邏輯封裝
▍首先打開 ServerManager.exe
這個(gè)工具你也可以從官方地址下載:
-
https://github.com/dwmkerr/sharpshell/releases
打開 ServerManager.exe 點(diǎn)擊 Load Server?
然后選中當(dāng)前目錄的 WindowsExplorerExtentions.dll
選中第一個(gè)然后點(diǎn)擊 Install 安裝擴(kuò)展
出現(xiàn)如下提示代表安裝成功
此時(shí),復(fù)制文件地址和復(fù)制文件夾地址這2個(gè)擴(kuò)展菜單已經(jīng)可用了
<我的工具箱>是動(dòng)態(tài)創(chuàng)建二級(jí)子菜單的容器,需要配置下文件
▍打開 menu.txt 配置文件
總共要配置4個(gè)東西(按照-_-隔開)
-
[1] 針對(duì)什么后綴的文件進(jìn)行 比如 .csv 代表只針對(duì) csv 文件才會(huì)創(chuàng)建該菜單
-
[2] 菜單名稱
-
[3] 這個(gè)菜單功能對(duì)應(yīng)的可執(zhí)行文件 這個(gè)根據(jù)功能自己開發(fā)了
-
[4] 傳給上面可執(zhí)行文件的參數(shù) {path} 會(huì)動(dòng)態(tài)替換為選擇的文件地址全路徑
注意,針對(duì)[1] 有2個(gè)特殊約定
如果配置 * 那么選擇文件或者文件夾都會(huì)出現(xiàn)該菜單
*-_-測試-_-E:\xxxxx\xxxx.exe-_-"{path}"
如果配置 folder 那么只會(huì)選擇文件夾才會(huì)出現(xiàn)該菜單
folder-_-測試-_-E:\xxxxx\xxxx.exe-_-"{path}"
這樣一來的話,如果我后面想要?jiǎng)討B(tài)創(chuàng)建菜單,只需要開發(fā)這個(gè)菜單功能的可執(zhí)行文件,然后再 menu.txt 新增個(gè)配置就搞定了,是不是很方便。
上面說到下載包有個(gè) csv2xlsx.exe 文件,下面我們配置下動(dòng)態(tài)新增一個(gè)二級(jí)子菜單<轉(zhuǎn)成excel> 只針對(duì)csv文件有效。
menu.txt 配置如下:
.csv-_-轉(zhuǎn)成excel-_-E:\Tool\windows-extention\csv2xlsx.exe-_-"{path}"
我們這么配置下:
配置好后,在 csv 類型文件點(diǎn)擊右鍵,就可以看到效果了。
點(diǎn)擊該菜單,會(huì)啟動(dòng)一個(gè) cmd 窗口,注意,在非 csv 的文件是不會(huì)有這個(gè)菜單的,這個(gè)是根據(jù)配置來的。
其實(shí)就是將選中的文件路徑傳給你配置的可執(zhí)行文件去執(zhí)行。
源碼說明
打開 vs 創(chuàng)建一個(gè)空的 solution,新增一個(gè)新的 Class Library 工程(目標(biāo)是 framework)。
引入 ShapShell 包:
示例代碼???????
[ComVisible(true)]//這個(gè)很關(guān)鍵
[COMServerAssociation(AssociationType.AllFiles)] //這個(gè)代表針對(duì)文件類型才有效
//[COMServerAssociation(AssociationType.AllFilesAndFolders)]這個(gè)代表針對(duì)全部類型有效,包括文件夾
public class CopyFileLocationExt : SharpContextMenu
{
protected override bool CanShowMenu()
{
return true;
}
protected override ContextMenuStrip CreateMenu()
{
try
{
var contextMenu = new ContextMenuStrip();
var menuItem = new ToolStripMenuItem("復(fù)制文件路徑");
menuItem.Image = Resources.AppStrings.Duplicate3;
menuItem.Click += (sender, args) =>
{
var file = SelectedItemPaths.First();
Clipboard.SetText(file);
};
contextMenu.Items.Add(menuItem);
// Return the menu.
return contextMenu;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + Environment.NewLine + ex.StackTrace);
return null;
}
}
}
主要依賴 ShapShell,創(chuàng)建 SharpContextMenu 的實(shí)現(xiàn)類,重寫關(guān)鍵的 CanShowMenu 和 CreateMenu 的方法,注意 [ComVisible(true)] 不能漏。
▍如何調(diào)試
用 ServerManager.exe 注冊(cè)進(jìn)去后,菜單點(diǎn)擊的時(shí)候會(huì)進(jìn)入斷點(diǎn)。文章來源:http://www.zghlxwxcb.cn/news/detail-781926.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-781926.html
到了這里,關(guān)于Windows 右鍵菜單擴(kuò)展容器 [開源]的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!