首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用增量自定义进度UI在Windows C#上进行文档扫描?

使用增量自定义进度UI在Windows C#上进行文档扫描?
EN

Stack Overflow用户
提问于 2017-06-02 04:38:50
回答 1查看 1.6K关注 0票数 1

如何从C#增量地扫描Windows上的文档,同时获得回调以显示图像的片段,并更新我自己的自定义进度UI?

看起来扫描器API选项包括:

  • WIA,WIA脚本自动化(windows)
  • TWAIN (windows,linux)
  • ImageKit和ImageCaptureCore (MacOS)
  • 理智(linux)
  • ISIS (窗户,昂贵的商业广告)。

我对WIA脚本自动化的尝试:

我有一个简单的C#应用程序,它使用Windows脚本自动化扫描文档。但是,在扫描过程中,UI被弹出进度对话框劫持。

当前代码使用WIA脚本CommonDialog.showTransfer (请看这里)进行扫描,该脚本显示一个弹出进度栏对话框。我知道我可以使用Item.Transfer,但是它会在整个过程中阻塞,并且不提供回调,这样我就可以更新自己的自定义进度UI (或者取消传输)。

有什么方法可以用WIA进行非阻塞扫描,或者获得进度回调吗?

我一定要用吐温吗?

EN

回答 1

Stack Overflow用户

发布于 2017-06-02 16:18:51

看起来,在Windows上有两个非阻塞流扫描选项:

WIA COM

需要注意的是,WIA有一个高级的“脚本自动化”接口和一个低级的COM接口。使用底层的WIA提供了一种基于流的数据传输方法,使用IWiaTransfer和IWiaTransferCallback.

不幸的是,我可以找到的C# WIA包装器使用的是脚本自动化接口,它不提供流扫描接口。

Twain

吐温规格的第4-20页,名为缓冲内存模式传输,解释了如何使用固定大小的缓冲区来使用DAT_SETUPMEMXFERDAT_IMAGEMEMXFER命令增量传输扫描数据。这仍然阻止每个增量内存缓冲区,但在每个缓冲区之后,它允许应用程序显示部分传入数据,并继续传输或取消数据。

我试过由twain.org提供的twain和twain,但是他们没有看到我的扫描仪。我还想避免不得不安装LGPL twaindsm.dll。

双子网包装器提供了一些Twain支持,它可以工作,并且不需要本机TwainDSM DLL。不幸的是,它还不支持缓冲内存传输。因此,我扩展了它。

我的双网扫描分支能够在图像像素到达时增量显示它们,就在本地UI中。但是,它仍然会阻塞每个增量传输块的UI线程。目前还不清楚这个阻塞是否可以移动到后台线程。

递增扫描进度的youtube视频

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44320904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档