2011-08-10 123 views
5

如何更改上下文菜單中條目的順序(例如,用於目錄)我需要知道Windows在顯示時如何確定順序以便我可以控制它。例如,我想將我的自定義操作置於上下文菜單列表的末尾在Windows資源管理器上下文菜單中訂購

提前致謝!

+0

@Christoph Grimmer-Dietrich,什麼?你有沒有在谷歌找到答案?好的,給我鏈接。 – ixSci

+0

我很抱歉。我雖然第二個鏈接(http://windowsxp.mvps.org/context_folders.htm)會幫助你。 –

回答

7

我的谷歌福促使我this

所以排序是基於決策順序如下內容:

  1. 鍵優先級(例如,txtfile,則*,AFSO)
  2. shellex \ contextmenuhandlers的註冊表枚舉順序,靜態動詞的特殊情況總是第一個
  3. IContextMenu執行順序

因此,如果有任何競爭的位置,沒有一致的方式來擴展,以保證其在菜單中的相對位置。

顯然你不能對第一階段做任何事情。第3階段只適用於你的處理程序中實現的動詞。這就離開了第二階段。你唯一能做的就是在ContextMenuHandlers下命名你的條目,這樣它將首先被枚舉,但是沒有任何東西阻止別人做同樣的事情。

1

This Q&A顯示了在上下文菜單中創建(不移動)項目的簡單方法。我設法複製一個現有的項目。然後,我通過重命名密鑰以「aMyItem」或「0MyItem」開始,將項目移至上下文菜單中更高且更易於訪問的位置。

2

這是Windows 7,也許對新版本相同。它受到其他答案的啓發,都影響着訂單。

我正在解釋「*」(所有文件)的條目,但特殊擴展名也是如此。

對於在註冊表中做出的任何更改,我不承擔任何責任!

有在上下文菜單中三段,因爲它說,在How to Change the Order of Options in Context Menu(從answer by @Anonymouse

招呼他們:

2 - Default menu position (at the top). 
1 - Send to, copy to folder and move to folder menu part (in the middle). 
0 - Rename menu part (at the bottom). 

在這些章節中的位置由規則answer by @Luke決定
在「部分」內更改順序的最簡單方法是更改​​HKCR-*-shellHKCR-*-shellex下的註冊表項名稱。所有在子項shell之下的都將在shellex之下。具有CLSID作爲關鍵名稱的密鑰將作爲最後一個條目,因爲它們是使用的訂單中的最後一個。

作爲一個例子,我正在關注sample from MSDN to build a Context Menu Handler。即使用CLSID作爲shellex下的密鑰名稱,並將「友好名稱」作爲默認值。它被放置在「部分」2(頂部部分)的底部。我將密鑰名稱更改爲Asample之類的內容,並將缺省值更改爲CLSID。現在它是在shell之後直接輸入的。

還有一些更改訂單的方法。

對於shell下的密鑰,您可以將值Position與字符串數據TopBottom相加。無法決定什麼「部分」。

對於shellex下的鍵值Position不起作用。相反,可以決定上面的條目將使用flagsdescribed in the link的「部分」。

  1. 使用CLSID你要移動的shellext。這就像
    {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}。從鍵名或默認值中獲取它,取決於條目的完成方式。
  2. 找到HKCR-CLSID下的條目,密鑰的名稱爲CLSID
  3. 使用名稱flags和數據DWORD添加一個值,並在上面找到的CLSID下面描述的「部分」編號。
相關問題