次の方法で共有


WIA ミニドライバーに UI を追加する

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::DeviceDialog メソッドの E_NOTIMPL を返す必要があります。 その他の戻り値を指定すると、デバイスの [デバイス] ダイアログ ボックスが表示されなくなります。

デバイス ダイアログ ボックスは、インプロセス COM サーバーでモーダル ダイアログとして実装する必要があります。親の pDeviceDialogData ->hwndParentDialogBoxParam 関数に渡します (Windows SDK ドキュメントで説明)。 デバイス ダイアログ ボックスは、成功のためにS_OKを返す必要があります。ユーザーがダイアログ ボックスをキャンセルした場合はS_FALSE、その他のエラーについては COM エラー HRESULT が返されます。

DEVICEDIALOGDATA 構造体には、カスタム デバイス ダイアログを実装するために必要なすべてのデータが含まれています。

デバイスのカスタム アイコンを提供するには、 IWiaUIExtension::GetDeviceIcon メソッドを実装します。 アイコンは DestroyIcon を使用して呼び出し元によって破棄されます (Windows SDK のドキュメントで説明)。

WIA には、スクリプトのサポートが非常に限られています。 そのため、UI を置き換えることができる一方で、スクリプト内でそれを単に抑制することはできません。

このセクションの残りの部分には、次のものが含まれます。

独自のカスタム UI を実装する方法の完全な例である"Hello World" WIA ミニドライバー UI 拡張機能 を作成します。