處理程式會定義 AutoPlay 的軟體部分。 他們會定義軟體的圖示和易記名稱,以及具現化元件物件模型 (COM) 元件,以及如何初始化元件以回應事件。 特定事件的每個處理程式都會登錄為適當 EventHandler 索引鍵下的值。 偵測到該事件時,系統會提示使用者從針對該事件註冊的所有處理程式清單中選擇處理程式。
說明
處理程式及其相關聯的值定義在 AutoplayHandlers\Handlers 索引鍵下。 子機碼會根據系統是否可以直接讀取裝置內容,或裝置是否透過專屬介面將內容提供給系統而有所不同。
下列範例顯示用於裝置的子機碼和值,例如數位攝像機或 .mp3 播放機,透過專屬介面將其內容提供給系統。 範例處理程式稱為 MyHandler。
HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
SOFTWARE
Microsoft
Windows
CurrentVersion
Explorer
AutoplayHandlers
Handlers
MyHandler
Action [REG_SZ] = Play music
CLSID [REG_SZ] = {a51f2ed3-634e-4a97-9d55-efcf08e7b32f}
DefaultIcon [REG_EXPAND_SZ] = %ProgramFiles%\Windows Media Player\wmplayer.exe,0
InitCmdLine [REG_SZ] = /Play
ProgID [REG_SZ] = WMP.PlayMusicFiles
Provider [REG_SZ] = Windows Media Player
注意
雖然此範例同時顯示 ProgID 和類別識別碼 (CLSID) 值,但實際上這些值互斥,因此只有一個或另一個值存在。 建議使用 ProgID 值。 無論使用哪一個,它都應該指向實作 IHWEventHandler 介面的 COM 元件。
您可以將 Action 值輸入為常值,例如「播放音樂」,如本範例所示,或是以資源字串作為檔名。 您也可以將 Provider 值輸入為常值,或輸入為具有資源字串的檔名。 AutoPlay 會將 Action 值和 Provider 值與 "using" 一詞結合,來建立在 UI 中顯示的易於理解的標題。 在範例中,產生的標題是「使用 Windows Media Player 播放音樂」。
DefaultIcon 值會指向.ico檔案或二進位檔中的資源。 如果二進位檔名稱後面的數值為零或更高,則它是該二進制檔中圖標的索引值。 如果是負值,則為圖示資源標識符。 建議使用負索引值。 在.ico檔案的情況下,不需要任何值。 建議您在路徑中使用環境變數。
InitCmdLine 值會在呼叫任何其他方法之前,先透過 IHWEventHandler::Initialize 方法傳遞未變更。
下列範例顯示用於可以直接讀取之裝置的子機碼及其數值,例如 CD-ROM 磁碟驅動器或其他可卸載式磁碟裝置。 同樣地,範例處理程式會呼叫 MyHandler。
HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
SOFTWARE
Microsoft
Windows
CurrentVersion
Explorer
AutoplayHandlers
Handlers
MyHandler
Action [REG_SZ] = @%systemroot%\System32\wiaacmgr.exe,-276
DefaultIcon [REG_EXPAND_SZ] = %systemroot%\System32\wiaacmgr.exe,-2
InvokeProgID [REG_SZ] = WIA.AutoPlayDropHandler
InvokeVerb [REG_SZ] = open
Provider [REG_SZ] = @%systemroot%\System32\wiaacmgr.exe,-101
在此範例中,Action 和 Provider 的值顯示為用資源字串表示的檔名,而不是直接的值,但它們所對應的參考字串仍以相同方式使用。 它們會與“using”一詞結合在一起,形成一個親切的標題,如前所述。
InvokeProgID 和 InvokeVerb 值會取代 CLSID、InitCmdLine 和 ProgID。 InvokeProgID 和 InvokeVerb 值與在 HKEY_CLASSES_ROOT下找到的機碼名稱相符,如下列登錄專案所示。 這組範例鍵會對應至之前提到的特定 Handler 範例。
HKEY_CLASSES_ROOT
WIA.AutoplayDropHandler
shell
open
DropTarget
Clsid = {F1ABE2B5-C073-4dba-B6EB-FD7A5111DD8F}
CoCreateInstance 函式會使用 CLSID 來實作適當的應用程式。
以這兩種方式之一定義處理程序之後,您必須為特定事件註冊它。 您可以透過在 EventHandlers的事件鍵中指定處理程式名稱來完成此操作。 下列範例示範如何將 MyHandler 註冊為 GenericVolumeArrival 事件的處理程式。 它沒有指派的數據值。
HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
SOFTWARE
Microsoft
Windows
CurrentVersion
Explorer
AutoplayHandlers
EventHandlers
GenericVolumeArrival
MyHandler [REG_SZ]
相關主題