You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#调用WIA如何检测扫描仪是否支持ADF进纸器及双面扫描功能

C# 基于WIA库检测扫描仪进纸器与双面功能方案

核心原理

WIA扫描仪的硬件能力通过固定ID的设备属性暴露,你用到的属性ID 3088 对应的是WIA_DPS_DOCUMENT_HANDLING_SELECT,它的返回值是位掩码,不同位代表不同硬件支持状态:

  • 位0(对应数值1):支持平板扫描
  • 位1(对应数值2):配备进纸器(ADF)
  • 位4(对应数值16):支持双面扫描

提示:部分设备对字符串形式的属性ID兼容性较差,建议直接用数值索引读取属性:wiaDev.Properties[3088].get_Value()

实现代码

你可以直接读取该属性的值,通过位运算判断支持的扫描类型:

using WIA;

// 替换为你自己的已连接扫描仪设备获取逻辑
Device wiaDev = GetConnectedScannerDevice(); 

int deviceHandlingCap = (int)wiaDev.Properties["3088"].get_Value();

bool supportFlatbed = (deviceHandlingCap & 1) != 0;
bool supportFeeder = (deviceHandlingCap & 2) != 0;
bool supportDuplex = (deviceHandlingCap & 16) != 0;

下拉框选项生成逻辑

拿到三个布尔值之后,就可以动态生成下拉选项,避免给用户展示设备不支持的功能:

  • 如果supportFlatbed为true,添加「Flatbed(平板)」选项
  • 如果supportFeeder为true,添加「Feeder(进纸器)」选项
  • 如果supportFeeder和supportDuplex同时为true,添加「Feeder(DUPLEX)(双面进纸)」选项

用户选择对应选项后,你再把对应值写回3088属性即可替换原来的静态设置:

  • 平板模式:写入1
  • 单面进纸模式:写入2
  • 双面进纸模式:写入18(即2 | 16的位运算结果)

内容的提问来源于stack exchange,提问作者adrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:45:04