在windows右鍵菜單中加入自己的程式 [轉載]

來源:互聯網
上載者:User

標籤:dll   files   sdn   art   操作   支援   主題   tag   參考   

原文連結: http://blog.csdn.net/marklr/article/details/4006356 
在windows右鍵菜單中加入自己的程式標籤: windowsattributes擴充commandshell文檔2009-03-20 08:44 3369人閱讀 評論(1) 收藏 舉報 分類:BCB(12) 

修改右鍵菜單應該在註冊表中,具體的說,是在HKEY_CLASSES_ROOT根鍵下(這裡可是右鍵菜單中所有命令的根源哦!)。展開該根鍵,其下的子鍵主要有兩種:副檔名鍵(.+副檔名)和類定義鍵。一般地說,只要是在windows系統中登入過的副檔名,在HKEY_CLASSES_ROOT下均有“·該副檔名”子鍵   ,記錄該副檔名的一些資訊,對某種特定類型的檔案的右鍵菜單的修改,便是在該鍵或“副檔名file”鍵下的操作。   
  一、在所有的檔案右鍵菜單中加入命令   
  如果你的系統上安裝有Winzip、UltraEdit等,當你對任一檔案點右鍵時,都會有“Add   to   zip”、“UltraEdit-32”等命令(當然,Winzip稍有不同,我將在後面講到)。它的添加方法是:   
  1.開啟“HKEY_CLASSES_ROOT/*”;   
  2.在其下建立“shell/命令/command”分支,再將command的索引值設為執行該命令時所用的可執行程式的絕對路徑,並在其後加“%1”即可。   
  例:在“HKEY_CLASSES_R   
  OOT/*”下建立“shell/用寫字板開啟/command”子鍵,將command的索引值設為“c:/windows/notepad.exe   %1”,就會在右鍵菜單中出現“用寫字板開啟”的命令了。     
  說明:1.   要刪除該類命令,只需將“命令”子鍵刪除即可;   
  2.   有的人或許會問他按我寫的去做,但是得到的為何與我的有一些不同,這就是我的命令裡有快速鍵(N),只要在“用寫字板開啟”後加入“(&N)”即可。     
    
  二、在特定檔案類型的右鍵菜單中加入命令   
  剛才說到了Winzip這個軟體,對普通的檔案類型,它的右鍵菜單中有“Add   to   zip”,但是對它所支援的壓縮檔類型,如*.zip、*.cab、*.rar在其右鍵菜單中有“Open   with   Winzip”、“Extract   to”、“Extract   to   folder”、“Create   Self-Extractor(.EXE)”   等命令,對於自解壓性安裝檔案(如OICQ99b),其右鍵菜單中有“Run   with   Winzip”命令。下面是特定檔案類型的右鍵菜單的命令添加方法(以在mp3檔案的右鍵菜單中加入Play   with   winamp為例):   
  1.開啟“HKEY_CLASSES_ROOT/mp3_auto_file”主鍵;   
  2.在其下建立“shell/Play   with   Winamp(&P)/command”,將command的索引值設為“C:/Program   files/winamp/winamp.exe   %1”   。   
  說明:當有多個軟體可以播放mp3檔案時,我們可以在右鍵菜單中添加多條命令,如加入“Play   with   Unreal”等命令,但是我們如何將某一條命令定義為預設操作(即右鍵菜單中的黑體命令)呢?   
  你一定會說,很簡單的事情嗎!將mouse移向一mp3檔案,在按右鍵的同時按shift,在右鍵菜單中選“開啟檔案“便可更改,但是這是錯誤的,不信你試試看,這樣只有在右鍵菜單中選“開啟”時才會用你所選擇的程式來開啟它,否則,它仍舊一如繼往。因為它的預設操作不是“開啟“這條命令。真正的方法是將shell的預設索引值改為你所想執行的命令,例如將shell的索引值改為“Winamp”。     
  還有,不知道你發現了沒有,我在前面的例子中用的是“Play   with   Winamp”命令,而在這裡用的是“Winamp”,是不是有點不對應呢?說到這裡,真是讓我心酸,本來我在txt文檔中用shell進行預設操作的轉換時(轉換open與print)挺成功的,但是一轉換“Play   with   Winamp”與“Play   with   Unreal”便失敗,總是轉換不過來,最後才明白這可能是“瘟酒吧”的一個bug,它要求轉換時主鍵的鍵名為單個字串時才有效。對漢字與英文的組合也有效,不過中間可不能有空格(不知道這是否與我的Win98是D版有關?)。     
  如果你認為上面的方法不太方便且過於複雜,其實在Windows中還提供了不用操作註冊表的更為方便安全的方法:開啟一個檔案夾,選“查看/檔案夾選項/檔案類型”,   在這裡你將會找到所有已經註冊的檔案類型,選擇“mp3檔案/編輯”,看到操作下面的“建立”、“編輯”、“刪除”、“設為預設值”這四個按鈕沒有?不用我再教你了吧!嘿嘿。     
    
  三、在所有的檔案夾右鍵菜單中加入命令   
  如果你用過Acdsee這個軟體,就會發現在檔案夾的右鍵菜單中總有“Browse   with   acdsee”這一命令,同類的還有Pc-cillin中的Trend   Pc-cillin   98命令,下面再該類命令的添加方法:   
  1.開啟“HKEY_CLASSES_ROOT/diretory/shell”主鍵;   
  2.在其下建立“命令/command”……下面不用再說了吧!   
  說明:1.如果你細心一下的話,你將會發現其實在磁碟機的右鍵菜單中,也有“Browse   with   acdsee”   “Trend   Pc-cillin98”等命令,磁碟機也是特殊的檔案夾,但是通過上面的方法是無法在磁碟機的右鍵菜單中加入命令的。如果要在其中加入命令,須對“HKEY_CLASSES_ROOT/drive/shell”主鍵進行操作;   
  3.在“HKEY_CLASSES_ROOT”主鍵下還有一個folder子鍵,顧名思義,對它的操作將影響所有的檔案夾,包括資源回收筒,切記切記!   
    
  四、在所有的檔案與檔案夾的右鍵菜單中加入命令   
  如果你自己開發了一個程式,它的操作對象是檔案和檔案夾,因此你想在所有的檔案和檔案夾的右鍵菜單中加入特定的命令進行操作,這就得看下面的了。   
  開啟“HKEY_CLASSES_ROOT/AllFilesystemObjects”主鍵,在其下建立“shell/命令/command”,以下操作同前。     
  需要指出的是這隻是一種解決方案,如果大家看我所抓下的圖,會發現總有一個“IconView”命令,出現在所有的檔案和檔案夾的右鍵菜單中,但是這可不是用這種方法形成的,不妨作一下對比,這條命令是通過該軟體中的應用程式擴充庫iv_shext.dll擴充而來,因此它出現在右鍵菜單的中部。而不是在頂部   。(什嗎?讓我講一下這種方法?)由於這種方法涉及到編程方面的內容,限於篇幅和主題,我就不講這種方法了(噓!小聲點,其實我也是不會。)   
    
  五、一些特殊命令的添加與刪除   
  1.資源管理員   
  在Windows系統中,普通檔案夾、磁碟機、資源回收筒等的右鍵菜單中都有“資源管理員“命令,如果你只想在磁碟機中保留該命令,可以先在“HKEY_CLASSES_ROOT/folder/shell”主鍵中刪除explore子鍵,然後在“HKEY_CLASSES_ROOT/drive/shell”主鍵中建立“explore/command”子鍵,令commmand的索引值為“C:/WINDOWS/Explorer.exe/e,/idlist,%I,%L”怎麼樣,成功了吧!   
  2.清空資源回收筒   
  在Windows系統中,只有在資源回收筒的右鍵菜單中才有“清空資源回收筒”的命令,是不是太不方便了呢,好,我們可以經過一番改造,讓所有的檔案菜單中都有“清空資源回收筒”的命令,follow   me!   
  我們的思路是先找出“清空資源回收筒”這個命令的來源,然後將其照搬到“HKEY_CLASSES_ROOT/*”下即可。好,還是先來找吧,我找呀找,終於找到了!——再教你一招,就是一些特殊的命令(特別是第三方提供的軟體),都是由應用程式擴充庫(.DLL)擴充而來,在註冊表的“shellex/ContextMenuHandlers”中便能找到它的痕迹。   我們開啟“HKEY_CLASSES_ROOT/CLSID/{645FF040-5081-101B-9F08-00AA002F954E}   /shellex/ContextMenuHandlers”,可以發現其下有一名為“{645FF040-5081-101B-9F08-00AA002F954E}”的子鍵,這就是“清空資源回收筒”命令的根源了。   
  找到了根源,就容易多了,在“HKEY_CLASSES/ROOT/*/shellex/ContextMenuHandlers”下建立一鍵名為“{645FF040-5081-101B-9F08-00AA002F954E}”的子鍵,怎麼樣,夠酷吧!   
  3.建立命令的子命令的添加與刪除   
  不知道有沒有遇到這種情況:你經常自己手工編寫網頁,在單位的機器上的建立命令中有“建立html文檔”的命令,但是你的機器上卻沒有,還有,隨著各種軟體的不斷增加,你的建立命令彈出子命令的時間越來越長,夠嗆的吧!   不要緊,不用急,讓我來幫你把該出來的叫出來,不該來的讓它回去!   
  開啟“HKEY_CLASSES/ROOT/.htm”,添加一主鍵shellnew,然後建立字串值NullFile   ,索引值為空白,你現在再對案頭點右鍵,看看建立,是不是多了一點什嗎?   至於刪除,想各位不致讓我多說了吧!   
  4.剪下、複製、粘貼等命令的添加   
  注意,我只是談剪下、複製、粘貼等命令的添加,也就是說對右鍵菜單中沒有這些命令的某些對象,可以添加,而對那些本來有就這些命令的對象,就連刪除它們,我都無能為力。   
  好,我現在以資源回收筒為例,來進行剪下、複製、粘貼等命令的添加,具體地說,有“開啟、剪下、複製、粘貼、重新命名、刪除、屬性”等命令的添加。   先開啟“HKEY_CLASSES_ROOT/CLSID/{645FF040-5081-101B-9F08-00AA002F954E}”主鍵,你會發現有“shellfolder”子鍵,在該子鍵下建立二進位值attributes,它的索引值就決定了這些命令在右鍵菜單中的顯示與隱藏。具體如下:   
  命令   索引值   
  開啟   00   00   00   20   
  剪下   02   00   00   00   
  複製   01   00   00   00   
  粘貼   00   01   00   00   
  刪除   20   00   00   00   
  重新命名   10   00   00   00   
  屬性   40   00   00   00   
  如果你要顯示某些命令,只需將該命令所對應的索引值相加,結果作為attributes的索引值即可。例如:當attributes值為00   00   00   00(預設)時,將不顯示以上命令,當為73   01   00   20時,將顯示所有的命令。現在好了,可以將“資源回收筒“改為你所想改的名稱了,還可以將“廢物”粘貼到資源回收筒了(不過我看這倒沒有多大的作用,是嗎?)     
  5.“發送到”及其菜單   
  有的檔案夾(如我的文件)的右鍵菜單中沒有“發送到”這條命令,我們可以給它添加上去,方法可以參考“清空資源回收筒”命令的添加方法。就是開啟“   HKEY_CLASSES_ROOT/CLSID/{450D8FBA-AD25-11D0-98A8-0800361B1103}/shellex/ContextMenuHandlers”,在其下建立“{7BA4C740-9E81-11CF-99D3-00AA004AE837}”子鍵,就可以了。     
  至於“發送到“的菜單,是不需要在註冊表中對其進行操作的,它的根源是“C:/windows/SendTo”這個檔案夾,你只需在這個檔案夾內建立一個捷徑,讓它指向你所想要發送到的檔案夾,就OK了。   
  6.尋找   
  在Windows系統中,普通檔案夾及磁碟機的右鍵菜單中有“尋找……”這條命令,如果我們要在資源回收筒中尋找誤刪除的檔案,而此時資源回收筒中的檔案又多的話,我們就可以在資源回收筒的右鍵菜單中加入“尋找……”這條命令。具體方法可以參考2,5。只是需要建立的子鍵為“{61E218E0-65D3-101B-9F08-061CEAC3D50D}”。只不過命令變成了“檔案或檔案夾……”

在windows右鍵菜單中加入自己的程式 [轉載]

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.