動詞和檔案關聯
當使用者以滑鼠右鍵按一下 Shell 物件,例如檔案時,Shell 會顯示快速鍵 (內容) 功能表。 此功能表包含一份命令清單,使用者可以選取以在專案上執行各種動作。 這些命令也稱為快捷方式功能表項目或動詞命令。 您可以自訂快顯功能表。
本主題的組織方式如下:
因為快顯功能表通常用於檔案管理,Shell 會提供一組預設命令,例如 剪下 和 複製,出現在任何檔案系統物件的快捷方式功能表上,例如檔案或資料夾。
下列範例說明以滑鼠右鍵按一下 MyFile.xyz-ms所顯示的預設快捷方式功能表。
因為.xyz-ms不是已註冊檔案類型的成員,所以MyFile.xyz-ms出現預設快捷方式功能表的原因。 相反地, .txt 是已註冊的檔案類型。 如果您以滑鼠右鍵按一下.txt檔案,則會在其上方區段中看到具有三個額外命令的快捷方式功能表:列印、編輯和開啟。
若要擴充檔案類型的快捷方式功能表,您必須為每個命令建立登錄專案。 更複雜的方法是實作快顯功能表 (動詞命令) 處理常式,可讓您逐一擴充檔案類型的快捷方式功能表。 如需詳細資訊,請參閱 建立操作功能表處理常式和 操作功能表參考。
快捷方式功能表處理常式是一種檔案類型處理常式,可將命令新增至現有的快捷方式功能表。 快捷方式功能表處理常式會與檔案類型相關聯,而且每當類別的成員顯示快捷方式功能表時,就會呼叫 。 Shell 會檢查登錄,以查看檔案類型是否與任何快捷方式功能表處理常式相關聯。 如果是,Shell 會查詢處理常式以取得其他快捷方式功能表項目。
快捷方式功能表上的每個命令都會以其動詞來識別登錄中。 這些動詞與 ShellExecuteEx 以程式設計方式啟動應用程式時所使用的動詞相同。
動詞命令是殼層用來識別相關聯命令的簡單文字字串。 每個動詞命令都會對應至用來在主控台視窗或批次 (.bat) 檔案中啟動命令的命令字串。
例如,開啟動詞通常會啟動程式來開啟檔案。 命令字串通常如下所示:
"My Program.exe" "%1"
如果命令字串的任何專案包含或可能包含空格,則必須以引號括住。 否則,如果專案包含空格,則不會正確剖析。 例如, 「我的Program.exe」 會正確啟動應用程式。 如果您使用[我的Program.exe但不加上引號,則系統會嘗試以Program.exe啟動My作為其第一個命令列引數。 您應該一律使用引號搭配由 Shell 擴充為字串的引數 ,例如 「%1」,因為您無法確定字串不會包含空格。
動詞也可以有與其相關聯的顯示名稱,該名稱會顯示在快捷方式功能表上,而不是動詞字串本身。 例如,openas 的顯示字串是 Open With。 就像一般功能表字串一樣,在顯示字串中包含連字號,允許選取命令的鍵盤。
在 Windows 7 和更新版本中,支援透過 OpenSearch 通訊協定將外部來源連線到 Windows 用戶端。 這可讓使用者搜尋遠端資料存放區,並從 Windows 檔案總管中檢視結果。 OpenSearch v1.1 標準定義簡單的檔案格式,可用來描述用戶端如何查詢 Web 服務的資料存放區,以及服務應該如何傳回用戶端轉譯的結果。
您可能需要串流非檔案系統專案,以避免在 OpenSearch 結果的情況下下載專案。 同盟搜尋功能可讓您從支援 OpenSearch 的非檔案系統位置搜尋專案,例如 SharePoint 和其他 Web 服務支援的網站。 在這些專案上叫用動詞時,系統會下載專案的暫存版本,並將其傳遞至動詞實作。 建議使用動詞實作器,藉由註冊動詞支援的一組 URL 架構來串流專案,以避免下載檔案的需求。 動詞命令會使用 SupportedProtocols 登錄機碼來執行此動作。
定義特定檔案類型的快捷方式功能表項目可讓您指定相關聯應用程式如何開啟檔案類型的成員。 不過,當使用者嘗試使用應用程式來開啟與應用程式無關的檔案類型時,應用程式也可以註冊要使用的個別預設程式。 您註冊預設程式的方式與註冊快捷方式功能表項目的方式大致相同。 如需定義快捷方式功能表項目的詳細資訊,請參閱 建立操作功能表處理常式。
預設程式有兩個基本用途。 其中一個是指定要叫用應用程式以開啟任意檔案類型的方式。 例如,您可以使用命令列旗標來指出開啟未知的檔案類型。 另一個目的是定義檔案類型的各種特性,例如快捷方式功能表項目和圖示。 如果使用者將您的應用程式與其他檔案類型產生關聯,該類別會有這些特性。 如果先前與其他應用程式相關聯的其他檔案類型,這些特性將會取代原始專案。
若要註冊預設程式,請將您為應用程式的 ProgID 所建立的相同登錄機碼放在應用程式的子機碼 下,HKEY_CLASSES_ROOT\Applications。 您也可以包含 FriendlyAppName 值,為系統提供應用程式的易記名稱。 應用程式的易記名稱也可以從其可執行檔中擷取,但只有在 FriendlyAppName 值不存在時才會擷取。
下列範例登錄專案說明定義易記名稱和數個快顯功能表項 之MyProgram.exe 的預設程式。 命令字串包含 /a 旗標,以通知應用程式正在開啟任意檔案類型。 如果您包含 DefaultIcon 子機碼,則應該使用一般圖示。
HKEY_CLASSES_ROOT
MyProgram.exe
shell
open
command
(Default) = C:\MyDir\MyProgram.exe /a "%1"
print
command
(Default) = C:\MyDir\MyProgram.exe /a /p "%1"
printto
command
(Default) = C:\MyDir\MyProgram.exe /a /p "%1" "%2"
- 如需其他背景,請參閱 檔案關聯簡介。
- 如需使用檔案類型處理常式擴充 Shell 的概念資訊,請參閱 建立殼層延伸模組處理常式。