共用方式為


建立快捷方式功能表處理程式

快捷功能表處理程式,也稱為操作功能表處理程式或動詞處理程式,是檔類型處理程式的類型。 這些處理程式可以實作的方式,讓它們載入自己的進程或總管或其他第三方進程。 在建立同進程處理程式時,請小心,因為它們可能會對載入它們的進程造成傷害。

注意

註冊在32位應用程式內容中運作的處理程式時,64位型 Windows 版本有特殊考慮:在不同位的應用程式內容中叫用時,WOW64 子系統會將文件系統存取重新導向至某些路徑。 如果您的.exe處理程式儲存在其中一個路徑中,則無法在此內容中存取。 因此,作為解決方法,請將您的.exe儲存在未重新導向的路徑中,或儲存啟動實際版本的.exe存根版本。

本主題的組織方式如下:

標準動詞

應用程式通常會負責為所定義的動詞提供本地化的顯示字串。 不過,為了提供語言獨立性的程度,系統會定義一組常用的動詞命令,稱為標準動詞。 一律不會向使用者顯示標準動詞,而且可以搭配任何 UI 語言使用。 系統會使用標準名稱自動產生正確本地化的顯示字串。 例如,開啟動詞的顯示字串會設定為 英文系統上的Open ,以及德文系統上的德文對等專案。

標準動詞 描述
開盤 開啟檔案或資料夾。
Opennew 在新視窗中開啟檔案或資料夾。
列印 列印檔案。
Printto 允許使用者將檔案拖曳至印表機物件來列印檔案。
瀏覽 開啟 Windows 檔案總管,並選取資料夾。
屬性 開啟物件的屬性表。

注意

Printto 動詞也是正式的,但它永遠不會顯示。 其包含可讓使用者將檔案拖曳至印表機物件來列印檔案。

快捷功能表處理程式可以透過 IContextMenu::GetCommandString 搭配 GCS_VERBWGCS_VERBA提供自己的標準動詞。 系統會使用標準動詞作為傳遞至 ShellExecute 的第二個參數 (lpOperation),而 是 CMINVOKECOMMANDINFO。傳遞至 IContextMenu::InvokeCommand 方法的 lpVerb 成員。

擴充動詞

當使用者以滑鼠右鍵按下物件時,快捷方式功能表會顯示預設動詞。 您可能想要在未顯示在每個快捷方式選單上的某些快捷選單上新增及支援命令。 例如,您可以有一些命令,這些命令不常使用,或適用於有經驗的使用者。 基於這個理由,您也可以定義一或多個擴充動詞。 這些動詞類似於一般動詞,但會以註冊方式區分出一般動詞。 若要能夠存取擴充動詞,用戶必須在按下 SHIFT 鍵時,以滑鼠右鍵按兩下物件。 當使用者這樣做時,除了默認動詞之外,也會顯示擴充動詞。

您可以使用登錄來定義一或多個擴充動詞。 只有當使用者以滑鼠右鍵按下,同時按下SHIFT鍵時,才會顯示相關聯的命令。 若要將動詞定義為擴充,請將「擴充」 REG_SZ 值新增至動詞的子機碼。 值不應該有任何與其相關聯的數據。

僅以程式設計方式存取動詞

這些動詞永遠不會顯示在操作功能表中。 您可以使用 ShellExecuteEx 並指定 pExecInfo 參數的 lpVerb 欄位來存取這些欄位(SHELLEXECUTEINFO 物件)。 若要將動詞定義為僅以程序設計方式存取,請將 “ProgrammaticAccessOnly” REG_SZ 值新增至動詞的子機碼。 值不應該有任何與其相關聯的數據。

您可以使用登錄來定義一或多個擴充動詞。 只有當使用者以滑鼠右鍵按下,同時按下SHIFT鍵時,才會顯示相關聯的命令。 若要將動詞定義為擴充,請將「擴充」 REG_SZ 值新增至動詞的子機碼。 值不應該有任何與其相關聯的數據。

使用靜態動詞自定義快捷方式功能表

為快捷方式功能表選擇靜態或動態動詞之後,您可以註冊檔類型的靜態動詞來擴充檔類型的快捷方式功能表。 若要這樣做,請在 與文件類型相關聯之應用程式的 ProgID 子機碼下方新增 Shell 子機碼。 您可以選擇性地定義檔類型的默認動詞,方法是將它設為Shell子機碼的預設值。

默認動詞會先顯示在快捷方式功能表上。 其目的是在呼叫ShellExecuteExecuteEx函式時提供它可以使用的動詞命令,但未指定動詞命令。 Shell 在此方式中使用ShellExecuteEx,不一定選取默認動詞。

Shell 會依下列順序使用第一個可用的動詞命令:

  1. 默認動詞命令
  2. 如果指定動詞順序,登錄中的第一個動詞命令
  3. Open 動詞命令
  4. Open With 動詞命令

如果未列出任何動詞,則作業會失敗。

針對您想要在Shell子機碼下新增的每個動詞,建立一個子機碼。 每個子機碼都必須將 REG_SZ 值設定為動詞的顯示字串(當地語系化字串)。 針對每個動詞子機碼,建立命令子機碼,並將預設值設定為命令行以啟動專案。 對於標準動詞,例如 OpenPrint,您可以省略顯示字串,因為系統會自動顯示正確本地化的字串。 對於非標準動詞,如果您省略顯示字串,則會顯示動詞字串。

在下列登錄範例中,請注意:

  • 因為 Doit 不是標準動詞動詞,所以會指派顯示名稱,可按 D 鍵加以選取。
  • Printto 動詞不會出現在快捷方式功能表上。 不過,其包含在登錄中可讓使用者在印表機圖示上卸除檔案來列印檔案。
  • 每個動詞都會顯示一個子機碼。 %1 代表檔名和 %2 印表機名稱。
HKEY_CLASSES_ROOT
   .myp-ms
      (Default) = MyProgram.1
   MyProgram.1
      (Default) = My Program Application
      Shell
         (Default) = doit
         doit
            (Default) = &Do It
            command
               (Default) = c:\MyDir\MyProgram.exe /d "%1"
         open
            command
               (Default) = c:\MyDir\MyProgram.exe /d "%1"
         print
            command
               (Default) = c:\MyDir\MyProgram.exe /p "%1"
         printto
            command
               (Default) = c:\MyDir\MyProgram.exe /p "%1" "%2"

下圖說明快捷方式功能表的延伸模組,根據上述登錄專案。 此快捷方式功能表在其功能表上具有 [開啟]、 [執行動作] 和 [列印 動詞],並以 [執行] 做為默認動詞。

執行默認動詞快捷方式功能表的螢幕快照

使用 IDropTarget 介面啟用處理程式

動態數據交換 (DDE) 已被取代;請改用 IDropTarget IDropTarget 更強固,而且具有更佳的啟用支持,因為它使用處理程式的 COM 啟用。 在多個項目選取的情況下,IDropTarget 不會受限於 DDE 和 CreateProcess 中找到的緩衝區大小限制。 此外,專案會以可轉換成專案數位的數據物件的形式傳遞至應用程式,方法是使用 SHCreateShellItemArrayFromDataObject 函式。 這樣做會比較簡單,而且當項目轉換成命令行或 DDE 通訊協定的路徑時,不會遺失命名空間資訊。

如需檔案關聯屬性之 IDropTarget 和 Shell 查詢的詳細資訊,請參閱感知的類型和應用程式註冊。

指定靜態動詞的位置和順序

一般來說,動詞會根據快捷功能表上的列舉方式排序;列舉會先根據關聯陣列的順序,再根據關聯陣列中專案的順序,如登錄的排序順序所定義。

動詞可以藉由指定關聯專案的Shell子機碼預設值來排序。 這個預設值可以包含單一專案,這會顯示在快捷方式功能表的頂端位置,或以空格或逗號分隔的項目清單。 在後者的情況下,清單中的第一個專案是預設專案,而其他動詞命令會以指定的順序緊接在它下方。

例如,下列登錄專案會依下列順序產生快捷功能表動詞:

  1. 顯示器
  2. 產品
  3. 個人化
HKEY_CLASSES_ROOT
   DesktopBackground
      Shell
         Display
         Gadgets
         Personalization

同樣地,下列登錄專案會依下列順序產生快捷功能表動詞:

  1. 個人化
  2. 產品
  3. 顯示器
HKEY_CLASSES_ROOT
   DesktopBackground
      Shell = "Personalization,Gadgets"
      Display

將動詞放置在功能表的頂端或底部

下列登錄屬性可用來將動詞放在功能表的頂端或底部。 如果有多個動詞指定此屬性,則最後一個要執行此動作的動詞會取得優先順序:

Position=Top | Bottom 

建立靜態級聯功能表

在 Windows 7 和更新版本中,透過登錄設定支援級聯功能表實作。 在 Windows 7 之前,只有透過 IContextMenu 介面的實作,才能建立級聯功能表。 在 Windows 7 和更新版本中,只有當靜態方法不足時,才應該使用 COM 程式代碼型解決方案。

下列螢幕快照提供級聯功能表的範例。

顯示級聯功能表範例的螢幕快照

在 Windows 7 和更新版本中,有三種方式可以建立級聯功能表:

使用 SubCommands 登錄專案建立級聯功能表

在 Windows 7 和更新版本中,您可以使用 SubCommands 專案,使用下列程式來建立級聯功能表。

使用 SubCommands 專案建立級聯功能表

  1. 在 HKEY_CLASSES_ROOT\ProgID\殼層建立子機碼,以代表您的級聯功能表。 在此範例中,我們將此子機碼命名為 CascadeTest。 確定 CascadeTest 子機碼的預設值是空的,並顯示為 [未設定的值]。

    HKEY_CLASSES_ROOT
       *
          shell
             CascadeTest
                (Default)
    
  2. 在 CascadeTest 子機碼中,新增類型為 REG_SZ 的 MUIVerb 專案,並將其指派在快捷方式功能表上顯示為其名稱的文字。 在此範例中,我們會將其指派為「測試串聯功能表」。

    HKEY_CLASSES_ROOT
       *
          shell
             CascadeTest
                (Default)
                MUIVerb = Test Cascade Menu
    
  3. 在 CascadeTest 子機碼中,新增類型為 REG_SZ 的 SubCommands 專案,該專案是以分號分隔的清單,該指令動詞應該以外觀順序出現在功能表上。 例如,我們在這裡指派一些系統提供的動詞:

    HKEY_CLASSES_ROOT
       *
          Shell
             CascadeTest
                SubCommands
                Windows.delete;Windows.properties;Windows.rename;Windows.cut;Windows.copy;Windows.paste
    
  4. 如果是自定義動詞,請使用任何靜態動詞實作方法來實作它們,並在 CommandStore 子機碼下列出它們,如下列範例所示,例如虛構動詞動詞 VerbName

    HKEY_LOCAL_MACHINE
       Software
          Microsoft
             Windows
                CurrentVersion
                   Explorer
                      CommandStore
                         Shell
                            VerbName
                            command
                               (Default) = notepad.exe %1
    

注意

這個方法的優點是,自定義動詞可以註冊一次,並藉由列出 SubCommands 專案下的動詞名稱來重複使用。 不過,它要求應用程式具有在 HKEY_LOCAL_MACHINE修改登錄的許可權。

 

使用 ExtendedSubCommandsKey 登錄專案建立級聯功能表

在 Windows 7 和更新版本中,您可以使用 ExtendedSubCommandKey 專案來建立擴充級聯功能表:級聯功能表內的級聯功能表。

下列螢幕快照是擴充級聯功能表的範例。

顯示裝置延伸級聯功能表的螢幕快照

由於HKEY_CLASSES_ROOT是HKEY_CURRENT_USERHKEY_LOCAL_MACHINE的組合,因此您可以在 HKEY_CURRENT_USER\Software\Classes 子機碼下註冊任何自定義動詞。 這樣做的主要優點是不需要提高許可權。 此外,其他檔案關聯也可以藉由指定相同的 ExtendedSubCommandsKey 子機碼,重複使用這組整個動詞。 如果您不需要重複使用這組動詞,則可以列出父代底下的動詞,但請確定父系的預設值是空的。

使用 ExtendedSubCommandsKey 專案建立級聯功能表

  1. 在 HKEY_CLASSES_ROOT\ProgID\殼層建立子機碼,以代表您的級聯功能表。 在此範例中,我們將此子機碼命名為 CascadeTest2。 確定 CascadeTest 子機碼的預設值是空的,並顯示為 [未設定的值]。

    HKEY_CLASSES_ROOT
       *
          shell
             CascadeTest2
                (Default)
    
  2. 在 CascadeTest 子機碼中,新增類型為 REG_SZ 的 MUIVerb 專案,並將其指派在快捷方式功能表上顯示為其名稱的文字。 在此範例中,我們會將其指派為「測試串聯功能表」。

    HKEY_CLASSES_ROOT
       *
          shell
             CascadeTest
                (Default)
                MUIVerb = Test Cascade Menu 2
    
  3. 在您建立的 CascadeTest 子機碼底下,新增 ExtendedSubCommandsKey 子機碼,然後新增文件子命令(REG_SZ類型):例如:

    HKEY_CLASSES_ROOT
       txtfile
          Shell
             Test Cascade Menu 2
                (Default)
                ExtendedSubCommandsKey
                   Layout
                   Properties
                   Select all
    

    確定測試串聯功能表 2 子機碼的預設值是空的,並顯示為 [未設定值]。

  4. 使用下列任何靜態動詞實作填入子系結。 請注意,CommandFlags 子機碼代表EXPCMDFLAGS值。 如果您想要在串聯功能表項前後新增分隔符,請使用ECF_SEPARATORBEFORE (0x20) 或 ECF_SEPARATORAFTER (0x40)。 如需這些 Windows 7 和更新版本旗標的描述,請參閱 IExplorerCommand::GetFlags ECF_SEPARATORBEFORE僅適用於最上層功能表項。 MUIVerb 的類型 為 REG_SZ,而 CommandFlags 的類型 為 REG_DWORD

    HKEY_CLASSES_ROOT
       txtile
          Shell
             Test Cascade Menu 2
                (Default)
                ExtendedSubCommandsKey
                   Shell
                      cmd1
                         MUIVerb = Notepad
                         command
                            (Default) = %SystemRoot%\system32\notepad.exe %1
                      cmd2
                         MUIVerb = Wordpad
                         CommandFlags = 0x20
                         command
                            (Default) = "C:\Program Files\Windows NT\Accessories\wordpad.exe" %1
    

下列螢幕快照是先前登錄機碼專案範例的圖例。

顯示級聯功能表範例的螢幕快照,其中顯示記事本和文字本的選項

使用 IExplorerCommand 介面建立級聯功能表

將動詞新增至級聯功能表的另一個選項是透過IExplorerCommand::EnumSubCommands 這個方法可讓數據源透過 IExplorerCommandProvider 提供其命令模組命令,以在快捷方式功能表上將這些命令當做動詞命令。 在 Windows 7 和更新版本中,您可以使用 IExplorerCommand 提供與 IContextMenu 相同的動詞實作。

下列兩個螢幕快照說明如何在 [裝置] 資料夾中使用級聯功能表

顯示裝置資料夾中級聯功能表範例的螢幕快照。

下列螢幕快照說明 [裝置] 資料夾中另一個級聯功能表的實作。

顯示 devices 資料夾中級聯功能表範例的螢幕快照

注意

由於 IExplorerCommand 僅支援同進程啟用,因此建議由需要共用命令與快捷功能表之間實作的Shell數據源使用。

 

使用進階查詢語法取得靜態動詞的動態行為

進階查詢語法 (AQS) 可以表示會使用動詞具現化專案的屬性來評估的條件。 此系統僅適用於快速屬性。 這些屬性是Shell數據源透過不從IShellFolder2::GetDefaultColumnState 傳回SHCOLSTATE_SLOW來報告的速度。

Windows 7 和更新版本支持標準值,以避免當地語系化組建發生問題。 當地語系化組建需要下列標準語法,才能利用此 Windows 7 增強功能。

System.StructuredQueryType.Boolean#True

在下列範例登入項目中:

  • AppliesTo 值會控制動詞是否顯示或隱藏。
  • DefaultAppliesTo 值會控制動詞是預設值。
  • HasLUAShield 值會控制是否顯示用戶帳戶控制件 (UAC) 防護。

在此範例中, DefaultAppliesTo 值會讓這個動詞成為任何檔名中 「exampleText1」 字組的檔案預設值。 AppliesTo 值會針對名稱中包含 「exampleText1」 的任何檔案啟用動詞。 HasLUAShield 值會顯示名稱中有 「exampleText2」 之檔案的盾牌。

HKEY_CLASSES_ROOT
   txtile
      shell
         test.verb
            DefaultAppliesTo = System.ItemName:"exampleText1"
            HasLUAShield = System.ItemName:"exampleText2"
            AppliesTo = System.ItemName:"exampleText1"

新增 Command 子機碼和值:

HKEY_CLASSES_ROOT
   txtile
      shell
         test.verb
            Command
               (Default) = %SystemRoot%\system32\notepad.exe %1

在 Windows 7 登錄中,請參閱 HKEY_CLASSES_ROOT\磁碟驅動器作為採用下列方法的 bitlocker 動詞動詞範例:

  • AppliesTo = System.Volume.BitlockerProtection:=2
  • System.Volume.BitlockerRequiresAdmin:=System.StructuredQueryType.Boolean#True

如需 AQS 的詳細資訊,請參閱 進階查詢語法

已淘汰:將動詞與動態數據 Exchange 命令產生關聯

DDE 已被取代;請改用 IDropTarget DDE 已被取代,因為它依賴廣播視窗訊息來探索 DDE 伺服器。 DDE 伺服器停止回應會停止廣播視窗訊息,因此會停止其他應用程式的 DDE 交談。 單一停滯的應用程式通常會在用戶體驗中造成所有後續停止回應。

IDropTarget 方法更健全,而且具有更佳的啟用支持,因為它使用處理程式的 COM 啟用。 在多個項目選取的情況下,IDropTarget 不會受限於 DDE 和 CreateProcess 中找到的緩衝區大小限制。 此外,專案會以可轉換成專案數位的數據物件的形式傳遞至應用程式,方法是使用 SHCreateShellItemArrayFromDataObject 函式。 這樣做會比較簡單,而且當項目轉換成命令行或 DDE 通訊協定的路徑時,不會遺失命名空間資訊。

如需檔案關聯屬性之 IDropTarget 和 Shell 查詢的詳細資訊,請參閱感知的類型和應用程式註冊。

完成動詞實作工作

下列實作動詞的工作與靜態和動態動詞實作有關。 如需動態動詞的詳細資訊,請參閱 使用動態動詞自定義快捷方式功能表。

自定義預先定義殼層物件的快捷方式功能表

許多預先定義的Shell物件都有可自定義的快捷功能表。 以您註冊一般檔類型的方式註冊命令,但使用預先定義的物件名稱做為檔類型名稱。

預先定義的物件清單位於建立殼層擴充處理程式[預先定義殼層物件] 區段中。 在登錄中新增動詞來自定義其快捷功能表的預先定義Shell物件,會以Verb一字標示在數據表中。

擴充新的子功能表

當使用者在 Windows 檔案總管中開啟 [檔案 ] 功能表時,顯示的其中一個命令是 [新增]。 選取此命令會顯示子功能表。 根據預設,子功能表包含兩個命令 FolderShortcut,可讓使用者建立子資料夾和快捷方式。 您可以擴充此子功能表,以包含任何文件類型的檔案建立命令。

若要將檔案建立命令新增至 [新增 ] 子功能表,您的應用程式檔案必須具有相關聯的檔類型。 在檔名底下包含ShellNew子機碼。 選取 [ 檔案 ] 功能表的 [ 新增 ] 命令時,Shell 會將檔類型新增至 [新增 ] 子功能表。 命令的顯示字串是指派給程式 ProgID 的描述性字串。

若要指定檔案建立方法,請將一或多個數據值指派給 ShellNew 子機碼。 下表列出可用的值。

ShellNew 子機碼值 描述
Command 執行應用程式。 這個 REG_SZ 值會指定要執行之應用程式的路徑。 例如,您可以將它設定為啟動精靈。
資料 建立包含指定數據的檔案。 這個 REG_BINARY 值會指定檔案的數據。 如果指定 NullFileFileName,則會忽略數據
FileName 建立檔案,該檔案是指定檔案的複本。 這個 REG_SZ 值會指定要複製之檔案的完整路徑。
NullFile 建立空白檔案。 NullFile 沒有指派值。 如果 指定 NullFile則會忽略 DataFileName 登錄值。

 

下列登錄機碼範例和螢幕快照說明 .myp-ms 檔類型的新子功能表。 它有一個命令 MyProgram 應用程式

HKEY_CLASSES_ROOT
   .myp
      (Default) = MyProgram.1
      MyProgram.1
         ShellNew
         NullFile

螢幕快照說明 [新增 ] 子功能表。 當使用者從 [新增] 子功能表選取 MyProgram 應用程式時,Shell 會建立名為 New MyProgram Application.myp-ms 的檔案,並將它傳遞至MyProgram.exe

視窗總管的螢幕快照,其中顯示 「new」 子功能表上的新 「myprogram 應用程式」 命令

建立拖放處理程式

實作拖放處理程式的基本程式,與傳統快捷方式功能表處理程式相同。 不過,快捷方式功能表處理程式通常會只使用傳遞至處理程式之 IShellExtInit::Initialize 方法的 IDataObject 指標來擷取物件的名稱。 拖放處理程式可以實作更複雜的數據處理程式,以修改拖曳對象的行為。

當使用者以滑鼠右鍵按兩下Shell物件以拖曳物件時,當用戶嘗試卸除物件時,就會顯示快捷方式功能表。 下列螢幕快照說明一般拖放快捷功能表。

拖放快捷方式功能表的螢幕快照

拖放處理程式是快捷方式功能表處理程式,可將專案新增至此快捷方式功能表。 拖放處理程式通常會在下列子機碼下註冊。

HKEY_CLASSES_ROOT
   Directory
      shellex
         DragDropHandlers

在針對拖放處理程式命名的 DragDropHandlers 子機碼下新增子機碼,並將子機碼的預設值設定為處理程式類別標識元 (CLSID) GUID 的字串形式。 下列範例會啟用 MyDD 拖放處理程式。

HKEY_CLASSES_ROOT
   Directory
      shellex
         DragDropHandlers
            MyDD
               (Default) = {MyDD CLSID GUID}

隱藏動詞和控制可見性

您可以使用 Windows 原則設定來控制動詞可見性。 動詞可透過原則設定來隱藏,方法是將 SuppressPolicy 值或 SuppressPolicyEx GUID 值新增至動詞的登錄子機碼。 將 SuppressionPolicy 子機碼的值設定為原則標識碼。 如果原則已開啟,則會隱藏動詞和其相關聯的快捷方式功能表項。 如需可能的原則標識碼值,請參閱 RESTRICTIONS 列舉。

採用動詞選取模型

必須針對動詞設定登錄值,以處理使用者可以從項目選取單一專案、多個專案或選取項目的情況。 動詞命令針對動詞所支援的這三種情況,都需要個別的登錄值。 動詞選取模型的可能值如下所示:

  • 為所有動詞指定 MultiSelectModel 值。 如果未指定 MultiSelectModel 值,則會從您選擇的動詞實作類型推斷。 若為 COM 型方法(例如 DropTarget 和 ExecuteCommand)Player則會假設為其他方法 Document
  • 針對 僅支援單一選取項目的動詞指定Single
  • 針對 支援任意數目項目的動詞指定 Player
  • 針對 每個專案建立最上層視窗的動詞指定 Document 。 這樣做會限制啟動的項目數目,並協助避免用戶開啟太多視窗時耗盡系統資源。

當選取的項目數目不符合動詞選取模型,或大於下表中所述的預設限制時,指令動詞將無法顯示。

動詞實作的類型 Document 球員
舊版 15 個專案 100 個專案
COM 15 個專案 無限制

 

以下是使用 MultiSelectModel 值的範例登錄專案。

HKEY_CLASSES_ROOT
   Folder
      shell
         open
             = MultiSelectModel = Document
HKEY_CLASSES_ROOT
   ProgID
      shell
         verb
             = MultiSelectModel = Single | Document | Player

使用項目屬性

您可以測試專案的Shell屬性 SFGAO 旗標值,以判斷動詞是否應該啟用或停用。

若要使用此屬性功能,請在動詞命令下新增下列 REG_DWORD 值:

在下列範例登錄專案中,AttributeMask 會設定為 SFGAO_READONLY (0x40000)。

HKEY_CLASSES_ROOT
   txtfile
      Shell
         test.verb2
            AttributeMask = 0x40000
            AttributeValue = 0x0
            ImpliedSelectionModel = 0x0
            command
               (Default) = %SystemRoot%\system32\notepad.exe %1

透過 Desktop.ini 實作資料夾的自定義動詞

在 Windows 7 和更新版本中,您可以透過 Desktop.ini 將動詞新增至資料夾。 如需Desktop.ini檔案的詳細資訊,請參閱 如何使用 Desktop.ini 自定義資料夾。

注意

Desktop.ini檔案應一律標示為系統 + 隱藏,因此不會向用戶顯示。

 

若要透過Desktop.ini檔案新增資料夾的自訂動詞,請執行下列步驟:

  1. 建立標示 為唯讀系統的資料夾。

  2. 建立包含 [的Desktop.ini檔案。ShellClassInfo] DirectoryClass=Folder ProgID。

  3. 在登錄中,使用 CanUseForDirectory 的值建立 HKEY_CLASSES_ROOT\Folder ProgID。 CanUseForDirectory 值可避免誤用未參與透過 Desktop.ini 實作資料夾自定義動詞的 ProgID。

  4. 在 FolderProgID 子機碼下新增動詞,例如:

    HKEY_CLASSES_ROOT
       CustomFolderType
          Shell
             MyVerb
                command
                   (Default) = %SystemRoot%\system32\notepad.exe %1\desktop.ini
    

注意

這些動詞可以是默認動詞,在此情況下,按兩下資料夾會啟動動詞。

 

快捷功能表處理程式和多個選取動詞的最佳做法

為您的快捷方式功能表選擇靜態或動態動詞

使用動態動詞自定義快捷方式功能表

快速鍵 (操作) 功能表和快捷方式選單處理程式

動詞和檔案關聯

快捷方式功能表參考