將 UI 新增至 WIA Minidriver
您可以藉由使用 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 的完整範例。