2011-06-18 53 views

回答

1

您可以使用包含屬性列表的Properties對象。使用Device對象的Properties對象訪問掃描儀屬性(文檔進紙器),使用Item對象的Properties對象訪問頁面屬性(分辨率)。

下面是一些代碼:

 DeviceManager manager = new DeviceManagerClass(); 
     DeviceInfo scannerInfo = WiaHelper.FindFirstScanner(manager); 
     Device device = scannerInfo.Connect(); 
     Item item = device.Items[1]; 

    public static DeviceInfo FindFirstScanner(DeviceManager manager) 
    { 
     DeviceInfos infos = manager.DeviceInfos; 
     foreach (DeviceInfo info in infos) 
      if (info.Type == WiaDeviceType.ScannerDeviceType) 
       return info; 
     return null; 
    } 

    public static Property FindProperty(WIA.Properties properties, int propertyId) 
    { 
     foreach (Property property in properties) 
      if (property.PropertyID == propertyId) 
       return property; 
     return null; 
    } 

    public static void SetDeviceProperty(Device device, int propertyId, object value) 
    { 
     Property property = FindProperty(device.Properties, propertyId); 
     if (property != null) 
      property.set_Value(value); 
    } 

    public static object GetDeviceProperty(Device device, int propertyId) 
    { 
     Property property = FindProperty(device.Properties, propertyId); 
     return property != null ? property.get_Value() : null; 
    } 

    public static object GetItemProperty(Item item, int propertyId) 
    { 
     Property property = FindProperty(item.Properties, propertyId); 
     return property != null ? property.get_Value() : null; 
    } 

    public static void SetItemProperty(Item item, int propertyId, object value) 
    { 
     Property property = FindProperty(item.Properties, propertyId); 
     if (property != null) 
      property.set_Value(value); 
    } 
5

您可以檢索對象可用於您的掃描儀經由屬性導航功能,如Matthias建議你。 這裏是一個枚舉,我和所有的屬性及相關標識使用:

public enum WiaProperty 
{ 
    DeviceId = 2, 
    Manufacturer = 3, 
    Description = 4, 
    Type = 5, 
    Port = 6, 
    Name = 7, 
    Server = 8, 
    RemoteDevId = 9, 
    UIClassId = 10, 
    FirmwareVersion = 1026, 
    ConnectStatus = 1027, 
    DeviceTime = 1028, 
    PicturesTaken = 2050, 
    PicturesRemaining = 2051, 
    ExposureMode = 2052, 
    ExposureCompensation = 2053, 
    ExposureTime = 2054, 
    FNumber = 2055, 
    FlashMode = 2056, 
    FocusMode = 2057, 
    FocusManualDist = 2058, 
    ZoomPosition = 2059, 
    PanPosition = 2060, 
    TiltPostion = 2061, 
    TimerMode = 2062, 
    TimerValue = 2063, 
    PowerMode = 2064, 
    BatteryStatus = 2065, 
    Dimension = 2070, 
    HorizontalBedSize = 3074, 
    VerticalBedSize = 3075, 
    HorizontalSheetFeedSize = 3076, 
    VerticalSheetFeedSize = 3077, 
    SheetFeederRegistration = 3078,   // 0 = LEFT_JUSTIFIED, 1 = CENTERED, 2 = RIGHT_JUSTIFIED 
    HorizontalBedRegistration = 3079,  // 0 = LEFT_JUSTIFIED, 1 = CENTERED, 2 = RIGHT_JUSTIFIED 
    VerticalBedRegistraion = 3080,   // 0 = TOP_JUSTIFIED, 1 = CENTERED, 2 = BOTTOM_JUSTIFIED 
    PlatenColor = 3081, 
    PadColor = 3082, 
    FilterSelect = 3083, 
    DitherSelect = 3084, 
    DitherPatternData = 3085, 

    DocumentHandlingCapabilities = 3086, // FEED = 0x01, FLAT = 0x02, DUP = 0x04, DETECT_FLAT = 0x08, 
              // DETECT_SCAN = 0x10, DETECT_FEED = 0x20, DETECT_DUP = 0x40, 
              // DETECT_FEED_AVAIL = 0x80, DETECT_DUP_AVAIL = 0x100 
    DocumentHandlingStatus = 3087,   // FEED_READY = 0x01, FLAT_READY = 0x02, DUP_READY = 0x04, 
              // FLAT_COVER_UP = 0x08, PATH_COVER_UP = 0x10, PAPER_JAM = 0x20 
    DocumentHandlingSelect = 3088,   // FEEDER = 0x001, FLATBED = 0x002, DUPLEX = 0x004, FRONT_FIRST = 0x008 
              // BACK_FIRST = 0x010, FRONT_ONLY = 0x020, BACK_ONLY = 0x040 
              // NEXT_PAGE = 0x080, PREFEED = 0x100, AUTO_ADVANCE = 0x200 
    DocumentHandlingCapacity = 3089, 
    HorizontalOpticalResolution = 3090, 
    VerticalOpticalResolution = 3091, 
    EndorserCharacters = 3092, 
    EndorserString = 3093, 
    ScanAheadPages = 3094,     // ALL_PAGES = 0 
    MaxScanTime = 3095, 
    Pages = 3096,       // ALL_PAGES = 0 
    PageSize = 3097,      // A4 = 0, LETTER = 1, CUSTOM = 2 
    PageWidth = 3098, 
    PageHeight = 3099, 
    Preview = 3100,       // FINAL_SCAN = 0, PREVIEW = 1 
    TransparencyAdapter = 3101, 
    TransparecnyAdapterSelect = 3102, 
    ItemName = 4098, 
    FullItemName = 4099, 
    ItemTimeStamp = 4100, 
    ItemFlags = 4101, 
    AccessRights = 4102, 
    DataType = 4103, 
    BitsPerPixel = 4104, 
    PreferredFormat = 4105, 
    Format = 4106, 
    Compression = 4107,      // 0 = NONE, JPG = 5, PNG = 8 
    MediaType = 4108, 
    ChannelsPerPixel = 4109, 
    BitsPerChannel = 4110, 
    Planar = 4111, 
    PixelsPerLine = 4112, 
    BytesPerLine = 4113, 
    NumberOfLines = 4114, 
    GammaCurves = 4115, 
    ItemSize = 4116, 
    ColorProfiles = 4117, 
    BufferSize = 4118, 
    RegionType = 4119, 
    ColorProfileName = 4120, 
    ApplicationAppliesColorMapping = 4121, 
    StreamCompatibilityId = 4122, 
    ThumbData = 5122, 
    ThumbWidth = 5123, 
    ThumbHeight = 5124, 
    AudioAvailable = 5125, 
    AudioFormat = 5126, 
    AudioData = 5127, 
    PicturesPerRow = 5128, 
    SequenceNumber = 5129, 
    TimeDelay = 5130, 
    CurrentIntent = 6146, 
    HorizontalResolution = 6147, 
    VerticalResolution = 6148, 
    HorizontalStartPostion = 6149, 
    VerticalStartPosition = 6150, 
    HorizontalExtent = 6151, 
    VerticalExtent = 6152, 
    PhotometricInterpretation = 6153, 
    Brightness = 6154, 
    Contrast = 6155, 
    Orientation = 6156, // 0 = PORTRAIT, 1 = LANDSCAPE, 2 = 180°, 3 = 270° 
    Rotation = 6157, // 0 = PORTRAIT, 1 = LANDSCAPE, 2 = 180°, 3 = 270° 
    Mirror = 6158, 
    Threshold = 6159, 
    Invert = 6160, 
    LampWarmUpTime = 6161, 
} 

因爲你可以閱讀MSDN文檔的每一個屬性的可能值:

MSDN WIA Documentation

,或者如果您想深入瞭解,您可以分析原始SDK的頭文件。