我正在使用带有Delphi XE2的WIA 2.0。现在,我正试图让扫描仪进行扫描。起初我使用的CommonDialog.ShowAcquireImage
工作正常,除了一件事。我希望能够传入IDevice
,IDeviceInfo
或DeviceId
以跳过设备选择对话框。我已经尝试枚举Commands
的{{1}}属性,但我得到的只是Synchonize和Build Device Tree。这两个命令似乎都不是我想要的。
我正在尝试避开此对话框
但仍显示此对话框
我已经能够接近两种方式了。第一种方法是使用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设备连接到计算机。第二部分我将相机手机重新插入电脑,开始进入“选择设备”对话框。
我的问题是,无论有多少设备连接到机器但仍然显示属性对话框,如何在扫描时跳过设备选择对话框?
答案 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