WIA扫描时跳过设备选择对话框

时间:2012-11-13 20:10:06

标签: delphi windows-7 com delphi-xe2 wia

我正在使用带有Delphi XE2的WIA 2.0。现在,我正试图让扫描仪进行扫描。起初我使用的CommonDialog.ShowAcquireImage工作正常,除了一件事。我希望能够传入IDeviceIDeviceInfoDeviceId以跳过设备选择对话框。我已经尝试枚举Commands的{​​{1}}属性,但我得到的只是Synchonize和Build Device Tree。这两个命令似乎都不是我想要的。

我正在尝试避开此对话框

Selection Dialog Box

但仍显示此对话框

Properties dialog box

我已经能够接近两种方式了。第一种方法是使用IDevice

ShowTransfer方法
ICommonDialog

这会导致跳过两个对话框并显示进度条。这不会起作用,因为我仍然需要显示属性对话框。

我接近的第二种方式是在procedure TForm1.btnAutoScanClick(Sender: TObject); var lDevice : IDevice; lImage : IImageFile; lCommonDialog : ICommonDialog; begin lDevice := fDeviceManager.DeviceInfos[1].Connect; lCommonDialog := CoCommonDialog.Create; lCommonDialog.ShowDeviceProperties(lDevice,false); lImage := IUnknown(lCommonDialog.ShowTransfer(lDevice.Items[1],'{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}',false)) as IImageFile; lImage.SaveFile('c:\testauto.jpg'); end; 上致电ShowAcquireImage

ICommonDialog

完全符合我的要求如果只有一台WIA设备连接到计算机。第二部分我将相机手机重新插入电脑,开始进入“选择设备”对话框。

我的问题是,无论有多少设备连接到机器但仍然显示属性对话框,如何在扫描时跳过设备选择对话框?

1 个答案:

答案 0 :(得分:2)

您是否尝试过使用WIA_TLB.ScannerDeviceType(= 1)而不是UnspecifiedDeviceType(= 0)?

lDialog.ShowAcquireImage(WIA_TLB.ScannerDeviceType,WIA_TLB.GrayscaleIntent,WIA_TLB.MinimizeSize,
           jpegFormat,false,false,false);

发现@: http://msdn.microsoft.com/en-us/library/windows/desktop/ms630829(v=vs.85).aspx