IWiaDevMgr2::GetImageDlg 方法

IWiaDevMgr2::GetImageDlg 方法显示一个或多个对话框,这些对话框使用户能够从 Windows 映像获取 (WIA) 2.0 设备获取图像,并将图像写入指定的文件。 此方法扩展 IWiaDevMgr2::SelectDeviceDlg 的功能,以在单个 API 调用中封装图像获取。

语法

HRESULT GetImageDlg(
  [in]      LONG      lFlags,
  [in]      BSTR      bstrDeviceID,
  [in]      HWND      hwndParent,
  [in]      BSTR      bstrFolderName,
  [in]      BSTR      bstrFilename,
  [in]      LONG      *plNumFiles,
  [in]      BSTR      **ppbstrFilePaths,
  [in, out] IWiaItem2 **ppItem
);

参数

lFlags [in]

类型: LONG

指定对话框行为。 可以设置为以下值:

标志 含义
0 默认行为。
WIA_DEVICE_DIALOG_USE_COMMON_UI 使用系统 UI 而不是供应商提供的 UI。 如果系统 UI 不可用,则使用供应商 UI。 如果两个 UI 都不可用,该函数将返回E_NOTIMPL。

 

bstrDeviceID [in]

类型: BSTR

指定要使用的扫描程序。

hwndParent [in]

类型:HWND

拥有“ 获取图像 ”对话框的窗口的句柄。

bstrFolderName [in]

类型: BSTR

指定存储扫描文件的文件夹的名称。

bstrFilename [in]

类型: BSTR

指定要将图像数据写入到的文件的名称。

plNumFiles [in]

类型: LONG*

指向要扫描的文件数的指针。

ppbstrFilePaths [in]

类型: BSTR**

指向扫描文件的路径数组的指针的地址。 在调用 IWiaDevMgr2::GetImageDlg 之前,初始化指针以指向大小为零的数组 (0) 。 请参阅备注

ppItem [in, out]

类型: IWiaItem2**

指向扫描图像的 IWiaItem2 的指针的地址。

返回值

类型: HRESULT

如果数据成功传输,则 IWiaDevMgr2::GetImageDlg 返回S_OK,如果用户取消对话框,则返回S_FALSE,或返回标准 COM 错误。

注意

如果函数返回S_FALSE, 则 ppbstrFilePaths 参数不一定为空。 如果用户取消,则已完成扫描的页面将在 ppbstrFilePaths 中处理并返回。 即使不使用它们,也必须释放数组。 请参阅备注

 

备注

如果应用程序为 bstrDeviceID 参数的值传递 NULL则 IWiaDevMgr2::GetImageDlg 将显示“选择设备”对话框,以便用户可以选择 WIA 2.0 输入设备。

“文件”菜单上使用名为“从扫描程序”的菜单项,以便在应用程序中提供设备和图像选择。

ppbstrFilePaths[i] 指向的数组中的每个 BSTR 调用 SysFreeString,并在数组本身上调用 CoTaskMemFree 以释放关联的内存。 如果返回S_FALSE,检查查看 plNumFiles 指向的值是否不为零。 如果值不为零,请释放应用程序中的 ppbstrFilePaths[i] 资源,因为用户可能会在扫描一个或多个页面后取消。 在调用 IWiaDevMgr2::GetImageDlg 之前,将 plNumFiles 初始化为零。 如果 plNumFiles 未初始化为零,并且 COM 基础结构中的故障导致函数在调用 IWiaDevMgr2::GetImageDlg 之前返回S_FALSE,则 plNumFiles 将具有误导性的垃圾值。

对话框必须具有 bstrFolderName 的足够权限,以便它可以保存具有唯一文件名的文件。 使用访问控制列表 (ACL) 保护文件夹,因为它包含用户数据。

要求

要求
最低受支持的客户端
Windows Vista [仅限桌面应用]
最低受支持的服务器
Windows Server 2008 [仅限桌面应用]
标头
Wia.h