關聯自己的應用程序到右鍵菜單中

在Windows2000中,當用戶在“我的電腦”或“資源管理器”中的某一文件上單擊鼠標右鍵時會出現一個快捷菜單。單擊的位置和對象不同,快捷菜單的內容也不盡相同。用戶可根據自己的需要定製快捷菜單中的一些內容。

假設用戶希望在txt文件類型的右鍵快捷菜單中關聯上自己的應用程序 (用戶的應用程序名爲mytxtapp.exe,在D盤根目錄下) ,步驟如下:

1、在註冊表中找到並打開HKEY_CLASSES_ROOT\.txt子鍵,查到其默認鍵值項數據爲“txtfile”。

2、在註冊表中找到並打開HKEY_CLASSES_ROOT\txtfile子鍵,在該子鍵的shell子鍵中添加一個“我的文本應用程序”子鍵,並將該子鍵的默認鍵值項數據設爲“用我的文本程序打開”,“用我的文本程序打開”將作爲新添加菜單項的名字出現在右鍵菜單中。雙引號內的文字用戶可隨意設置。

3、在HKEY_CLASSES_ROOT\txtfile\shell\我的文本應用程序子鍵中添加一個command子鍵,並將command子鍵的默認鍵值項數據設爲“d:\mytxtapp.exe %1”,此處設置的數據是在快捷菜單中選中相應的菜單項時執行的程序,%1表示應用程序啓動時自動將當前文件裝入。

[應用實例]

       用VC++的應用程序嚮導AppWizard建立一基於對話框的程序,接受所有默認選項。

在主對話框中添加一個按鈕控件,雙擊該按鈕,接受默認名,在該按鈕的消息響應函數中添加如下代碼:

HKEY hresult;

CString str1,str2;

long value;

LPCTSTR dataset1="txtfile\\shell\\我的文本應用程序";

LPCTSTR dataset2="txtfile\\shell\\我的文本應用程序\\command";

str1="用我的文本程序打開";

str2="d:\\mytxtapp.exe %1";

DWORD dwPos;

//創建“我的文本應用程序”子鍵

value=RegCreateKeyEx(HKEY_CLASSES_ROOT,dataset1,0,NULL,REG_OPTION_NON_VOLATILE,KEY_CREATE_SUB_KEY|KEY_ALL_ACCESS,NULL,&hresult,&dwPos);

//將該子鍵的“默認”數據項的數據設置爲“用我的文本程序打開”

       value=RegSetValueEx(hresult,NULL,0,REG_SZ,(const BYTE*)(LPCTSTR)str1,str1.GetLength());

       //創建“command”子鍵

value=RegCreateKeyEx(HKEY_CLASSES_ROOT,dataset2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_CREATE_SUB_KEY|KEY_ALL_ACCESS,NULL,&hresult,&dwPos);

//將該子鍵的“默認”數據項的數據設置爲用戶應用程序的路徑

       value=RegSetValueEx(hresult,NULL,0,REG_SZ,(const BYTE*)(LPCTSTR)str2,str2.GetLength());

::RegCloseKey(hresult);

這段代碼用來關聯用戶的應用程序。

在主對話框中再添加一個按鈕控件,雙擊該按鈕,接受默認名,在該按鈕的消息響應函數中添加如下代碼:

HKEY hKey;

LPCTSTR dataset1="txtfile\\shell\\我的文本應用程序";

LPCTSTR dataset2="txtfile\\shell";

long ret1=::RegOpenKeyEx(HKEY_CLASSES_ROOT,dataset1,0,KEY_READ,&hKey);

//刪除“command”子鍵

::RegDeleteKey(hKey,LPCTSTR("command"));

::RegCloseKey(hKey);

ret1=::RegOpenKeyEx(HKEY_CLASSES_ROOT,dataset2,0,KEY_READ,&hKey);

//刪除“我的文本應用程序”子鍵

::RegDeleteKey(hKey,LPCTSTR("我的文本應用程序"));

::RegCloseKey(hKey);

這段代碼用來恢復註冊表中的默認數據。

至此,我們完成了在擴展名爲.txt文件的右鍵菜單中關聯上自己的應用程序,但不是.txt文件的右鍵菜單上不會出現該菜單項。如果用戶希望在所有文件類型的右鍵菜單中關聯上自己的應用程序,則應在HKEY_CLASSES_ROOT\*\shell子鍵下進行操作,操作步驟同上。對於關聯其他類型的文件依此類推。

以上程序在Windows2000和VC6中通過。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章