您可以藉由使用 WIA 迷你驅動程式安裝個別 DLL 來新增擴充 UI 或取代 WIA 迷你驅動程式的 UI 元件。 不同于 TWAIN 驅動程式,WIA 驅動程式的 UI 元件與實際的 WIA 迷你驅動程式不同。 UI 元件會在應用程式的進程中執行,而 WIA 迷你驅動程式會在 WIA 服務的進程中執行。 因此,WIA 驅動程式可能不會直接顯示 UI;只有驅動程式的 WIA UI 擴充模組可能會顯示 UI。
WIA 可讓您將屬性頁新增至系統提供的對話方塊、提供自訂圖示影像,或完全取代系統提供的對話方塊。 屬性頁延伸機制是以IShellPropSheetExt COM 介面的殼層定義為基礎, (Microsoft Windows SDK檔) 中所述。 此機制會在裝置 UI >\shellex\PropertySheetHandlers) (HKCR\Clsid\<Clsid的屬性工作表處理常式下註冊。
除了屬性頁之外,所有裝置對話方塊延伸模組都需要實作 IWiaUIExtension 介面 。
如果您實作 IWiaUIExtension 介面,而且不想取代系統 UI,則必須針對 IWiaUIExtension::D eviceDialog 方法傳回E_NOTIMPL。 任何其他傳回值會隱藏裝置的裝置對話方塊。
裝置對話方塊必須在同進程 COM 伺服器中實作為強制回應對話方塊,並將父系的pDeviceDialogData - >hwndParent傳遞給 Windows SDK 檔) 中所述的DialogBoxParam函式 (。 裝置對話方塊必須傳回S_OK以取得成功,S_FALSE如果使用者取消對話方塊,或針對其他錯誤傳回 COM 錯誤 HRESULT。
DEVICEDIALOGDATA結構包含實作自訂裝置對話方塊所需的所有資料。
若要提供裝置的自訂圖示,請實作 IWiaUIExtension::GetDeviceIcon 方法。 圖示是由呼叫端使用 DestroyIcon 所終結, (Windows SDK 檔) 中所述。
注意 WIA 的腳本支援非常有限。 因此,雖然可以取代 UI,但無法只隱藏腳本中的 UI。
本節的其餘部分包括:
建立「Hello World」 WIA Minidriver UI 延伸模組,這是如何實作您自己的自訂 UI 的完整範例。