The IWiaDevMgr2::GetImageDlg method displays one or more dialog boxes that enable a user to acquire an image from a Windows Image Acquisition (WIA) 2.0 device and write the image to a specified file. This method extends the functionality of IWiaDevMgr2::SelectDeviceDlg to encapsulate image acquisition within a single API call.
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]
Specifies dialog box behavior. Can be set to the following values:
Flag Meaning 0 Default behavior. WIA_DEVICE_DIALOG_USE_COMMON_UI Use the system UI instead of the vendor-supplied UI. If the system UI is not available, the vendor UI is used. If neither UI is available, the function returns E_NOTIMPL.
- bstrDeviceID [in]
Specifies the scanner to use.
- hwndParent [in]
A handle of the window that owns the Get Image dialog box.
- bstrFolderName [in]
Specifies the name of the folder ito store the scanned files in.
- bstrFilename [in]
Specifies the name of the file to write the image data to.
- plNumFiles [in]
A pointer to the number of files to scan.
- ppbstrFilePaths [in]
The address of a pointer to an array of paths for the scanned files. Initialize the pointer to point to an array of size zero (0) before IWiaDevMgr2::GetImageDlg is called. See Remarks.
- ppItem [in, out]
The address of a pointer to the IWiaItem2 that the images were scanned from.
IWiaDevMgr2::GetImageDlg returns S_OK if the data is transferred successfully, returns S_FALSE if the user cancels the dialog box, or returns a standard COM error.
Note The ppbstrFilePaths parameter is not necessarily empty, if the function returns S_FALSE. If the user cancels, the pages that have completed scanning are processed and returned in ppbstrFilePaths. Even if they are not used, you must free the array. See Remarks.
If the application passes NULL for the value of the bstrDeviceID parameter, IWiaDevMgr2::GetImageDlg displays the Select Device dialog box so that the user can select the WIA 2.0 input device.
Use a menu item named From scanner on the File menu so that device and image selections are available in your application.
Call SysFreeString on each BSTR in the array that ppbstrFilePaths[i] points to, and call CoTaskMemFree on the array itself to free associated memory. If S_FALSE is returned, check to see if the value that plNumFiles points to is not zero. If the value is not zero, free the ppbstrFilePaths[i] resources in the application, because the user might cancel after scanning one or more pages. Initialize plNumFiles to zero before you call IWiaDevMgr2::GetImageDlg. If plNumFiles is not initialized to zero and a failure in the COM infrastructure causes the function to return S_FALSE before IWiaDevMgr2::GetImageDlg is called, then plNumFiles will have a misleading garbage value.
The dialog box must have sufficient rights to bstrFolderName so that it can save the files with unique file names. Protect the folder with an access control list (ACL) because it contains user data.
Minimum supported client
|Windows Vista [desktop apps only]|
Minimum supported server
|Windows Server 2008 [desktop apps only]|