天天看點

在資料總管右鍵菜單中添加新的菜單項

一、原理

關聯自己的應用程式到右鍵菜單中,當使用者在“我的電腦”或“資料總管”中的某一檔案上單擊滑鼠右鍵時會出現一個快捷菜單。

假設使用者希望在txt檔案類型的右鍵快捷菜單中關聯上自己的應用程式 (使用者的應用程式名為 txtapp.exe,在D盤根目錄下) ,步驟如下:  

1、在系統資料庫中找到并打開 HKEY_CLASSES_ROOT\.txt子鍵,查到其預設鍵值項資料為“txtfile”。  

2、在系統資料庫中找到并打開 HKEY_CLASSES_ROOT\txtfile子鍵,在該子鍵的shell子鍵中添加一個“新添加文本應用程式”子鍵,并将該子鍵的預設鍵值項資料設為“用測試程式打開”。

“用測試程式打開””将作為新添加菜單項的名字出現在右鍵菜單中。

3、在 HKEY_CLASSES_ROOT\txtfile\shell\我的文本應用程式 子鍵中添加一個command子鍵,并将command子鍵的預設鍵值項資料設為“d:\txtapp.exe %1”。

此處設定的資料是在快捷菜單中選中相應的菜單項時執行的程式,%1表示應用程式啟動時自動将目前檔案裝入。  

二、代碼

HKEY hresult; 

CString str1,str2; 

long result; 

DWORD dwPos; 

LPCTSTR dataset1=_T("txtfile\\shell\\新添加文本應用程式");   //若針對所有檔案,将txtfile 改為 AllFilesystemObjects

LPCTSTR dataset2=_T("txtfile\\shell\\新添加文本應用程式\\command"); 

str1=_T("用測試程式打開"); 

str2=_T("d:\\txtapp.exe %1"); 

//建立“新添加文本應用程式”子鍵 

result =RegCreateKeyEx(HKEY_CLASSES_ROOT,

dataset1,

0,

NULL,

REG_OPTION_NON_VOLATILE,

KEY_CREATE_SUB_KEY|KEY_ALL_ACCESS,

NULL,

&hresult,

&dwPos); 

//将該子鍵的“預設”資料項的資料設定為“用測試程式打開” 

result =RegSetValueEx(hresult,

NULL,

0,

REG_SZ,

(const BYTE*)(LPCTSTR)str1,

str1.GetLength()*2);   //Unicode到ASCII是2倍的關系

//建立“command”子鍵

result =RegCreateKeyEx(HKEY_CLASSES_ROOT,

dataset2,

0,

NULL,

REG_OPTION_NON_VOLATILE,

KEY_CREATE_SUB_KEY|KEY_ALL_ACCESS,

NULL,

&hresult,

&dwPos); 

//将該子鍵的“預設”資料項的資料設定為使用者應用程式的路徑 

result =RegSetValueEx(hresult,

NULL,

0,

REG_SZ,

(const BYTE*)(LPCTSTR)str2,

str2.GetLength()*2); 

::RegCloseKey(hresult); 

用Visual Studio .Net 2003制作安裝程式時輕松實作将自己的程式添加到系統的滑鼠右鍵菜單

(作者:唐洪法 2003-11-28)

有的時候我們需要将自己的程式添加到系統的右鍵菜單裡,以友善使用者啟動我們的程式。如下圖,把我自己制作的“我的資料總管”加到了系統的右鍵菜單中。

在資料總管右鍵菜單中添加新的菜單項

實作原理:在程式被安裝時,修改使用者的系統資料庫,将自己的欄目添加到系統菜單中。

當用Visual Studio .NET 2003來制作安裝程式時,要實作這個功能就非常非常的簡單。下面是具體的制作步驟:

1.  先給你的工程添加一個“安裝項目”。

怎麼添加安裝項目,具體的就不說了,在幫助文檔裡有很好的說明。

2.  在“解決方案資料總管”中,右單擊你的安裝項目,在彈出菜單中選擇“視圖”->“系統資料庫”項;如圖:

在資料總管右鍵菜單中添加新的菜單項

3.  單擊“系統資料庫”進入系統資料庫修改視圖。

4.  在左邊的“目标計算機上的系統資料庫”欄目右單擊“HKEY_CLASSES_ROOT”,在彈出菜單中選擇“建立Key”,命名為“*”。

5.  右單擊“*”,在彈出菜單中選擇“建立”->“項”,這裡的命名随便你自己選擇。比如“MyApp”。

6.  右單擊“MyApp”,在彈出菜單中選擇“建立”->“字元串值”。這時在右邊的視窗中會出現新添的項。将系統自動給的名字删掉(可單擊右鍵,在彈出菜單中選擇“删除”),然後按回車,這時,名稱會自動改為“(預設值)”。這一步很重要!

7.  右單擊“(預設值)”,在“屬性”視圖中找到”value”這一欄,鍵入“我的資料總管”。

8.  右單擊“MyApp”,在彈出菜單中選擇“建立”->“項”,命名為“command”。

9.  右單擊“command”,在彈出菜單中選擇“建立”->“字元串值”。然後跟剛才的步驟一樣,将其名稱改為“(預設值)”。再在屬性欄中将他的“value”屬性設定為“[TARGETDIR][ProductName]”。大家一看就知道了拉,就是把他的值設定為你的程式在目标計算機上的位置。這也是非常重要的。

10.              最後,為了讓程式在解除安裝的時候能把我們在系統資料庫裡添加的資訊删掉,别忘了将“MyApp”的屬性中“DeleterAtUninstall”屬性置為“true”

好了,大功告成了!把你的安裝項目生成一下,然後自己安裝一下試試,肯定沒有問題了!

我們實作的這個是當你右單擊檔案時出現的彈出菜單中添加了我們自己的程式連結,如果想實作針對檔案夾的,或者是特定檔案的,方法都類似,隻是修改的系統資料庫的位置不同。大家自己摸索着試試吧!很好玩的!

c#