關聯自己的應用程式到右鍵選單中 (轉)

worldblog發表於2007-12-14
關聯自己的應用程式到右鍵選單中 (轉)[@more@] 

關聯自己的應用到右鍵選單中:namespace prefix = o ns = "urn:schemas--com::office" />

在2000中,當在“我的”或“”中的某一上單擊滑鼠右鍵時會出現一個快捷選單。單擊的位置和不同,快捷選單的內容也不盡相同。使用者可根據自己的需要定製快捷選單中的一些內容。

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

1、在登錄檔中找到並開啟HKEY_CLASSES_.txt子鍵,查到其預設鍵值項資料為“txtfile”。

2、在登錄檔中找到並開啟HKEY_CLASSES_ROOTtxtfile子鍵,在該子鍵的子鍵中新增一個“我的文字應用程式”子鍵,並將該子鍵的預設鍵值項資料設為“用我的文字程式開啟”,“用我的文字程式開啟”將作為新新增選單項的名字出現在右鍵選單中。雙引號內的文字使用者可隨意設定。

3、在HKEY_CLASSES_ROOTtxtfileshell我的文字應用程式子鍵中新增一個command子鍵,並將command子鍵的預設鍵值項資料設為“d:mytxtapp.exe %1”,此處設定的資料是在快捷選單中選中相應的選單項時的程式,%1表示應用程式啟動時自動將當前檔案裝入。

[應用例項]

  用VC++的應用程式嚮導AppWizard建立一基於對話方塊的程式,接受所有預設選項。

在主對話方塊中新增一個按鈕,雙擊該按鈕,接受預設名,在該按鈕的訊息響應中新增如下程式碼:

HKEY hresult;

CString str1,str2;

long value;

LPCTSTR dataset1="txtfileshell我的文字應用程式";

LPCTSTR dataset2="txtfileshell我的文字應用程式command";

str1="用我的文字程式開啟";

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

D 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="txtfileshell我的文字應用程式";

LPCTSTR dataset2="txtfileshell";

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中透過。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993264/,如需轉載,請註明出處,否則將追究法律責任。

相關文章