Windows管理右鍵新建菜單的奧妙就在注冊表的HKEY_CLASSES_ROOT中——在HKEY_CLASSES_ROOT下存在兩種類型的項:一個是以文件擴展名項,另一個是類型項。這兩個項包含了用于確定新建菜單所需的全部數(shù)據(jù)結構。其中文件擴展名項下的“ShellNew”子項為新建菜單提供了鼠標點擊后行為的控制信息,類型項則提供了用于在新建菜單中顯示的項名稱。他們的實際工作原理,以.txt文件為例: 1、Windows Shell在初始化時會依次遍歷HKEY_CLASSES_ROOT中所有以“.”開頭的文件擴展名項; 2、對遍歷到的每一項項時讀取其的默認值,該值即為HKEY_CLASSES_ROOT中對應的類型項,[HKEY_CLASSES_ROOT\.txt]的默認值是txtfile; 3、并檢索其中是否存在ShellNew子項,若存在且第二步中的默認值不為空則表示該擴展名的文件能夠在Windows新建菜單中生成; 4、然后獲取第二步中得到的類型項所對應的默認值,該值即為Windows新建菜單中顯示的項名稱,[HKEY_CLASSES_ROOT\txtfile]的默認值為Text Document(注:在中文版的Windows系統(tǒng)中,該值在最終顯示時會被本地化模塊轉換為“文本文檔”顯示在新建菜單中)。 同時在ShellNew項中,注冊表提供了以下幾種字符串型的值:
寫到這里,相信大家可以發(fā)現(xiàn)我們此時已經(jīng)具備了在Windows右鍵新建菜單中創(chuàng)建自定義會議紀要文檔的全部知識,那么下面就再介紹下該功能的實現(xiàn)過程,以使得大家對以上的知識有更直觀的理解。 首先,在注冊表HKEY_CLASSES_ROOT下創(chuàng)建項“.mr”和“MeettingRecordFile”,并將.mr的默認值設置為“MeettingRecordFile”,MeettingRecordFile項的默認值設置為“會議紀要文檔”; 然后,在項.mr下新建子項“ShellNew”,接著在“ShellNew”下依次新建名為“command”和“iconpath”的字符串類型的值,其中“command”的值為“"E:\自產(chǎn)工具\會議紀要生成工具\ContextMenuMeettingRecordDoc.exe" "%1"”,“iconpath”的值為“C:\Windows\Installer\{20140000-0011-0000-0000-0000000FF1CE}\wordicon.exe,13”(注:該值是word2010的圖標地址,大家可根據(jù)需要用其他圖標)。 注意,因為會議紀要文檔最終需要由E:\自產(chǎn)工具\會議紀要生成工具\ContextMenuMeettingRecordDoc.exe 工具生成,而新建菜單只需提供新建文件的文件名,而不用生成文件,故無需再ShellNew中新建字符串類型值“NullFile”或“FileName” 。 至此,在右鍵新建菜單中我們就可以看到“會議紀要文檔”的項了,如下圖: 最后,在程序ContextMenuMeettingRecordDoc.exe 的代碼中,將其入口函數(shù)(本例是用C#Windows Form Application實現(xiàn))由static void Main()該為static void Main(string[] args),其它代碼不變,接著從通過args[0]獲取到新建文件的全路徑得到當前目錄,之后就可以在該目錄中按自定義命名規(guī)則生成的會議紀要文件了,下圖為點擊新建會議紀要文檔后的功能展示圖。 點擊新建“會議紀要文檔”后彈出的會議信息設置窗口 生成的會議紀要文件 生成的會議紀要文檔內容 |
|
來自: kangyongsun > 《待分類》