c# - 为什么 WIA 看不到我的扫描仪?

标签 c# winforms wia image-scanner

我正在尝试使用 WIA (Microsoft Windows Image Acquisition Library v2.0) 在 Vista 平台上运行的 VS2008 中构建一个 C# 3.5 WinForms 应用程序以从扫描仪获取图像。

我知道有很多 SDK 可以执行此操作(Accusoft、ByteScout、Knowledge Lake 等),但我们想要对 UI 进行一些控制(或缺乏)以及自定义图像处理和处理的能力,这就是我们尝试 WIA 角度的原因。

但是,我无法让 WIA“看到”我的扫描仪。

'Microsoft Windows Image Acquisition Library v2.0' dll 已在 VS 项目中引用,我已包含'using WIA;'在页面顶部。

下面是代码部分:

//Choose Scanner
CommonDialogClass class1 = new CommonDialogClass();
Device d = class1.ShowSelectDevice(WiaDeviceType.UnspecifiedDeviceType, true, false);
if (d != null)
{
    this.DeviceID = d.DeviceID;
}
else
{
    //no scanner chosen
    return;
}

符合要求但第 2 行(Device d = ...)在运行时会出现以下错误:
HRESULT 异常:0x80210015

据我所知,这通常意味着您的设备未插电/未开机或设备不兼容 WIA。
但是有问题的扫描仪出现在控制面板/扫描仪和相机中(意味着它与 WIA 兼容)并且在通过 Photoshop 访问时可以工作(意味着它已打开)。

我插入了其他设备(数码单反),上面的代码可以“看到”它们,所以代码可以正常工作。

有没有人对出了什么问题以及如何解决有任何建议?

更新 1:
我尝试了几种不同的扫描仪(佳能 5000F、明基 5250C),但问题相同。

更新 2:
我一直无法找到这方面的确切证据,但我认为我一直在测试的扫描仪,或者可能是大多数扫描仪:(,不兼容/不支持 WIA。我是现在正在考虑使用 TWAIN,但仍然希望听到任何人使用 WIA 取得一些成功。

更新 3: 最终放弃了 WIA 并使用了 .NET Twain SDK (EZTwain)。现在都整理好了。感谢大家的投入。

最佳答案

我认为您的扫描仪不支持 WIA。我建议使用大多数供应商都支持的 TWAIN。

我推荐使用 NTWAIN 库:

Nuget 包: https://www.nuget.org/packages/NTwain/

源代码: https://bitbucket.org/soukoku/ntwain

关于c# - 为什么 WIA 看不到我的扫描仪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2413910/

相关文章:

c# - 静态方法如何返回它自己的抽象类的对象 - WebRequest

c# - Unity高分徽章C#

c# - 转换大型 Xml 文件

c# - 简单的 Windows 窗体数据绑定(bind)

c++ - 编写虚拟网络摄像头?

c# - 从 WIA 图像文件加载图片框?

c# - WndProc:如何在窗体最小化时获取窗口消息

c# - 返回所有行和列

c# - 停止 SoundPlayer 播放

c# - 在 Windows 7 上使用 WIFI 扫描多个页面