gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:56:59 27 4
gpt4 key购买 nike

我正在使用 WIA 2.0 和 Delphi XE2。现在,我正在尝试使用扫描仪进行扫描。起初我使用CommonDialog.ShowAcquireImage除了一件事之外,它工作得很好。我希望能够传递 IDevice ,一个IDeviceInfo ,或 DeviceId以跳过设备选择对话框。我尝试通过 Commands 进行枚举IDevice的属性(property),但我得到的只是同步和构 build 备树。这两个命令似乎都不是我正在寻找的。

我正在尝试避免出现此对话框

Selection Dialog Box

但仍然显示这个对话框

Properties dialog box .

我可以通过两种方式接近。第一种是仅使用 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;

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

我接近的第二种方法是调用 ShowAcquireImageICommonDialog

procedure TForm1.btnScanClick(Sender: TObject);
const
pngFormat = '{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}';
jpegFormat = '{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}';
var
lImage : IImageFile;
lDialog : ICommonDialog;
begin
lDialog := CoCommonDialog.Create;
lImage := lDialog.ShowAcquireImage(WIA_TLB.UnspecifiedDeviceType,WIA_TLB.GrayscaleIntent,WIA_TLB.MinimizeSize,
jpegFormat,false,false,false);
lImage.SaveFile('c:\testmanual.jpg');
end;

如果只有一个 WIA 设备连接到计算机,它就会按照我想要的方式工作。当我将拍照手机重新插入计算机时,我开始出现“选择设备”对话框。

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

最佳答案

您是否尝试过使用 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

关于delphi - WIA 扫描时跳过设备选择对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13367971/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com