// 勾选框被反勾选时的处理
        private void CheckBox_UnChecked(object sender, RoutedEventArgs e)
        {
            if (!initFinishedFlag)
            {
                return;
            }
            CheckBox checkBox = e.Source as CheckBox;
            CapInfo  capInfo  = null;
            int      index    = 0;

            for (int i = 0; i < capList.Length; i++)
            {
                TwCap tempCapId = capList[i];
                if (capToControl[tempCapId] as CheckBox == checkBox)
                {
                    index = i;
                    break;
                }
            }
            TwCap capId = capList[index];

            capInfo = twSession.GetScannerCap(capId);
            capInfo.CurrentIntStr = "0";
            SetOneValue((Control)checkBox, capInfo);
            UpdateConfigUi(index + 1, capList.Length - 1);
        }
        public bool hasPlaten;                      //是否有平板


        public void GetPaperSource()
        {
            if (twSession.defaultScannerName.ToLower().Contains("kodak"))
            {
                capId = TwCap.CAP_PAPERSOURCE;


                CapItem capItem = twSession.GetCapabilitySupportedDataList(TwCap.CAP_PAPERSOURCE);
                CapType       = capItem.listDataType;
                CurrentIntStr = twSession.GetCapabilityCurrentValue(TwCap.CAP_PAPERSOURCE, ref capType);
                DefaultIntStr = twSession.GetCapabilityDefaultValue(TwCap.CAP_PAPERSOURCE, ref capType);

                if (capItem.list != null && capItem.list.Count == 3)
                {
                    hasPlaten = true;
                    if (valueList == null)
                    {
                        valueList = new ArrayList();
                    }
                    valueList.Clear();
                    valueList.Add(PaperSouceString.ADF);
                    valueList.Add(PaperSouceString.Platen);
                }
                //如果是自动模式,则设置为送纸器
                if (currentIntStr.Equals("0"))
                {
                    bool flag = SetCap("1");
                    if (flag)
                    {
                        currentIntStr = "1";
                    }
                }
                capId = TwCap.ECAP_PAPERSOURCE;
            }
        }
 /// <summary>
 /// Creates the specified a Capability.
 /// </summary>
 /// <param name="ds">The DS.</param>
 /// <param name="cap">The Capability.</param>
 /// <returns></returns>
 public static XCapability <T> Create(XDs ds, TwCap cap)
 {
     return(new XCapability <T> {
         DataSource = ds,
         Id = cap
     });
 }
Beispiel #4
0
 /// <summary>
 /// 保存能力设置
 /// </summary>
 /// <param name="capId">能力标识</param>
 /// <param name="oneValue">能力值</param>
 public void SetSettings(TwCap capId, TwOneValue oneValue)
 {
     if (userSettings == null)
     {
         return;
     }
     userSettings[capId] = oneValue;
 }
Beispiel #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DataSourceCapabilityAttribute"/> class.
 /// </summary>
 /// <param name="capability">The capability.</param>
 /// <param name="type">The type.</param>
 public DataSourceCapabilityAttribute(TwCap capability, TwType type)
 {
     this.Capability          = capability;
     this.Type                = type;
     this.Get                 = TwOn.Enum;
     this.GetCurrent          = this.GetDefault = TwOn.One;
     this.SupportedOperations = TwQC.Get | TwQC.GetCurrent | TwQC.GetDefault | TwQC.Set | TwQC.Reset;
 }
Beispiel #6
0
 public TwCapability(TwCap cap, short sval)
 {
     Cap = (short)cap;
     ConType = (short)TwOn.One;
     Handle = Twain.GlobalAlloc(0x42, 6);
     IntPtr pv = Twain.GlobalLock(Handle);
     Marshal.WriteInt16(pv, 0, (short)TwType.Int16);
     Marshal.WriteInt32(pv, 2, sval);
     Twain.GlobalUnlock(Handle);
 }
Beispiel #7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TwCapability"/> class.
        /// </summary>
        /// <param name="cap">The cap.</param>
        /// <param name="range">The range.</param>
        public TwCapability(TwCap cap, _TwRange range)
        {
            this.Cap     = cap;
            this.ConType = TwOn.Range;
            this.Handle  = Twain32.GlobalAlloc(0x42, Marshal.SizeOf(typeof(_TwRange)));
            IntPtr _pTwRange = Twain32.GlobalLock(Handle);

            Marshal.StructureToPtr(range, _pTwRange, true);
            Twain32.GlobalUnlock(Handle);
        }
        /// <summary>
        /// 添加一个数据项到下拉列表
        /// </summary>
        /// <param name="strItem"></param>
        /// <param name="ctrl"></param>
        /// <param name="capID"></param>
        private void AddComboBoxItem(String strItem, Control ctrl, TwCap capID)
        {
            ComboBoxItem newItem = new ComboBoxItem();
            string       capStr  = twSession.ConvertIntStringToEnumString(capID, strItem);

            if (capStr != null)
            {
                newItem.Content = capStr;
                ((ComboBox)(ctrl)).Items.Add(newItem);
            }
        }
Beispiel #9
0
        public TwCapability(TwCap cap, short sval, TwType twType)
        {
            this.Cap     = (short)cap;
            this.ConType = 5;
            this.Handle  = Twain.GlobalAlloc(66, 6);
            IntPtr ptr = Twain.GlobalLock(this.Handle);

            Marshal.WriteInt16(ptr, 0, (short)twType);
            Marshal.WriteInt32(ptr, 2, (int)sval);
            Twain.GlobalUnlock(this.Handle);
        }
        /*
         * public TwCapability(TwCap cap, short sval)
         * {
         *  Cap = (short)cap;
         *  ConType = (short)TwOn.One;
         *  Handle = Twain.GlobalAlloc(0x42, 6);
         *  IntPtr pv = Twain.GlobalLock(Handle);
         *  Marshal.WriteInt16(pv, 0, (short)TwType.Int16);
         *  Marshal.WriteInt32(pv, 2, (int)sval);
         *  Twain.GlobalUnlock(Handle);
         * }
         */
        public TwCapability(TwCap cap, TwFix32 val)
        {
            Cap     = (short)cap;
            ConType = (short)TwOn.One;
            Handle  = Twain.GlobalAlloc(0x42, 6);
            IntPtr pv = Twain.GlobalLock(Handle);

            Marshal.WriteInt16(pv, 0, (short)TwType.UInt16);
            Marshal.WriteInt32(pv, 2, (int)val.Whole);
            Marshal.WriteInt64(pv, 4, (long)val.Whole);
            Twain.GlobalUnlock(Handle);
        }
Beispiel #11
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TwCapability"/> class.
        /// </summary>
        /// <param name="cap">The cap.</param>
        /// <param name="array">The array.</param>
        /// <param name="arrayValue">The array value.</param>
        public TwCapability(TwCap cap, _TwArray array, object[] arrayValue)
        {
            this.Cap     = cap;
            this.ConType = TwOn.Array;
            this.Handle  = Twain32.GlobalAlloc(0x42, Marshal.SizeOf(typeof(_TwArray)) + (Marshal.SizeOf(arrayValue[0]) * arrayValue.Length));
            IntPtr _pTwArray = Twain32.GlobalLock(Handle);

            Marshal.StructureToPtr(array, _pTwArray, true);
            for (int i = 0, _ptr = _pTwArray.ToInt32() + Marshal.SizeOf(typeof(_TwArray)); i < arrayValue.Length; i++, _ptr += Marshal.SizeOf(arrayValue[0]))
            {
                Marshal.StructureToPtr(arrayValue[i], (IntPtr)_ptr, true);
            }
            Twain32.GlobalUnlock(Handle);
        }
Beispiel #12
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TwCapability"/> class.
        /// </summary>
        /// <param name="cap">The cap.</param>
        /// <param name="enumeration">The enumeration.</param>
        /// <param name="enumerationValue">The enumeration value.</param>
        public TwCapability(TwCap cap, _TwEnumeration enumeration, object[] enumerationValue)
        {
            this.Cap     = cap;
            this.ConType = TwOn.Enum;
            this.Handle  = Twain32.GlobalAlloc(0x42, Marshal.SizeOf(typeof(_TwEnumeration)) + (Marshal.SizeOf(enumerationValue[0]) * enumerationValue.Length));
            IntPtr _pTwEnumeration = Twain32.GlobalLock(Handle);

            Marshal.StructureToPtr(enumeration, _pTwEnumeration, true);
            for (int i = 0, _ptr = _pTwEnumeration.ToInt32() + Marshal.SizeOf(typeof(_TwEnumeration)); i < enumerationValue.Length; i++, _ptr += Marshal.SizeOf(enumerationValue[0]))
            {
                Marshal.StructureToPtr(enumerationValue[i], (IntPtr)_ptr, true);
            }
            Twain32.GlobalUnlock(Handle);
        }
Beispiel #13
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TwCapability"/> class.
        /// </summary>
        /// <param name="cap">The cap.</param>
        /// <param name="value">The value.</param>
        /// <param name="type">The type.</param>
        public TwCapability(TwCap cap, int value, TwType type)
        {
            this.Cap     = cap;
            this.ConType = TwOn.One;
            _TwOneValue _value = new _TwOneValue()
            {
                ItemType = type,
                Item     = value
            };

            this.Handle = Twain32.GlobalAlloc(0x42, Marshal.SizeOf(typeof(_TwOneValue)));
            IntPtr _pTwOneValue = Twain32.GlobalLock(Handle);

            Marshal.StructureToPtr(_value, _pTwOneValue, true);
            Twain32.GlobalUnlock(Handle);
        }
        public bool SetPaperSource()
        {
            bool flag = false;

            if (twSession.defaultScannerName.ToLower().Contains("kodak"))
            {
                capId = TwCap.CAP_PAPERSOURCE;
                TwType  type   = capType;
                CapInfo tmpCap = new CapInfo();
                tmpCap.capId         = capId;
                tmpCap.capType       = capType;
                tmpCap.currentIntStr = currentIntStr;
                flag  = twSession.SetCapability(tmpCap);
                capId = TwCap.ECAP_PAPERSOURCE;
            }
            return(flag);
        }
Beispiel #15
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="cap"></param>
        /// <param name="str">Maximum 255 ASCII chars</param>
        /// <param name="typ"></param>
        public TwCapability(TwCap cap, string str, TwType typ)
        {
            Cap     = (short)cap;
            ConType = (short)TwOn.One;
            Handle  = Twain.GlobalAlloc(0x42, 258);
            IntPtr pv = Twain.GlobalLock(Handle);

            Marshal.WriteInt16(pv, 0, (short)typ);

            int j;

            for (j = 0; j < Math.Min(str.Length - 1, 255); j++)
            {
                Marshal.WriteByte(pv, 2 + j, (byte)(int)str[j]);
            }
            Marshal.WriteByte(pv, 2 + j, (byte)0);
            Twain.GlobalUnlock(Handle);
        }
        /// <summary>
        /// 更新配置界面,不更新空白页阈值
        /// </summary>
        /// <param name="beginPos"></param>
        private void UpdateConfigUi(int beginPos, int endPos)
        {
            initFinishedFlag = false;
            //1:设置通用能力
            for (int i = beginPos; i < endPos; i++)
            {
                //  设置当前值
                TwCap capId = capList[i];
                twSession.ReadScannerCap(capId);
                CapInfo capInfo = twSession.GetScannerCap(capId);
                Control control = capToControl[capId] as Control;
                // 根据能力值设置控件能力范围
                InitControl(control, capInfo);
                // 设置控件当前值
                SetCurrentValue(control, capInfo);
                if (capId == TwCap.ECAP_PAPERSOURCE)
                {
                    ECAP_PAPERSOURCE.IsEnabled = capInfo.hasPlaten;
                }
            }

            initFinishedFlag = true;
        }
Beispiel #17
0
          //
          // Summary:
          // Sets the value for the specified Saraff.Twain.TwCap
          //
          // Parameters:
          // Capability:
          // Enumeration value Saraff.Twain.TwCap.
          //
          // CapabilityValue:
          // Set value.
          //
          // Exceptions:
          // Saraff.Twain.TwainException:
          // Raised when an error occurs during the operation.
         public void SetCap(TwCap capability, Twain32.Enumeration capabilityValue);
Beispiel #18
0
          //
          // Summary:
          // Returns flags indicating the supported data source operations
          // For the specified capability.
          //
          // Parameters:
          // Capability:
          // Value perechisdeniya TwCap.
          //
          // Returns:
          // Set of flags.
          //
          // Exceptions:
          // Saraff.Twain.TwainException:
          // Raised when an error occurs during the operation.
         public TwQC IsCapSupported(TwCap capability);
Beispiel #19
0
          //
          // Summary:
          // Sets the value for the specified Saraff.Twain.TwCap
          //
          // Parameters:
          // Capability:
          // Enumeration value Saraff.Twain.TwCap.
          //
          // CapabilityValue:
          // Set value.
          //
          // Exceptions:
          // Saraff.Twain.TwainException:
          // Raised when an error occurs during the operation.
         public void SetCap(TwCap capability, object [] capabilityValue);
Beispiel #20
0
 /// <summary>
 /// Возвращает флаги, указывающие на поддерживаемые источником данных операции, для указанного значения capability.
 /// </summary>
 /// <param name="capability">Значение перечисдения TwCap.</param>
 /// <returns>Набор флагов.</returns>
 /// <exception cref="TwainException">Возбуждается в случае возникновения ошибки во время операции.</exception>
 public TwQC IsCapSupported(TwCap capability) {
     if((this._TwainState&StateFlag.DSOpen)!=0) {
         using(TwCapability _cap=new TwCapability(capability)) {
             TwRC _rc=this.DsCap(this._appid,this._srcds,TwDG.Control,TwDAT.Capability,TwMSG.QuerySupport,_cap);
             if(_rc==TwRC.Success) {
                 return (TwQC)((_TwOneValue)_cap.GetValue()).Item;
             } else {
                 return 0;
             }
         }
     } else {
         throw new TwainException("Источник данных не открыт.");
     }
 }
Beispiel #21
0
          //
          // Summary:
          // Returns the value for the specified capability (opportunity).
          //
          // Parameters:
          // Capability:
          // Enumeration value TwCap.
          //
          // Returns:
          // Depending on the value of capability, can be returned: value type,
          // Array, Saraff.Twain.Twain32.Range, Saraff.Twain.Twain32.Enumeration.
          //
          // Exceptions:
          // Saraff.Twain.TwainException:
          // Raised when an error occurs during the operation.
         public object GetCap(TwCap capability);
Beispiel #22
0
        /// <summary>
        /// 读取配置文件
        /// </summary>
        /// <returns></returns>
        private bool LoadSettings()
        {
            try
            {
                //一:读取默认扫描仪名称
                string scannerName = defaultScannerName;
                //检查扫描仪名称是否存在
                if (scannerName == null)
                {
                    logger.Debug("没有选择扫描仪");
                    return(false);
                }

                //二:根据扫描仪名称读取节点配置
                XmlNodeList scannerNodeList = doc.SelectNodes(ConstCommon.scannerConfigXpath);

                //1:获得具有指定名称的配置节点
                XmlNode scannerNode = GetScannerSettins(scannerName, scannerNodeList);
                //1.1:如果不存在则返回
                if (scannerNode == null)
                {
                    logger.Debug("指定的扫描仪没有配置");
                    return(true);
                }
                //2:读取节点能力配置列表
                else
                {
                    XmlNodeList scannerChildList = scannerNode.ChildNodes;
                    if (scannerChildList[1] != null)
                    {
                        XmlNodeList capNodeList = scannerChildList[1].ChildNodes;

                        for (int j = 0; j < capNodeList.Count; j++)
                        {
                            XmlElement xmlElement = capNodeList[j] as XmlElement;

                            //2.1 获取节点数值
                            string capName  = xmlElement.Name;
                            string capType  = xmlElement.GetAttribute("Itemtype");
                            string capValue = xmlElement.GetAttribute("Item");

                            //2.2 生成oneValueItem对象
                            TwCap      capID    = ((TwCap)Enum.Parse(typeof(TwCap), capName));
                            TwType     dataType = (TwType)Enum.Parse(typeof(TwType), capType);
                            TwOneValue oneValue = new TwOneValue(dataType, capValue);

                            //2.4 记录扫描能力
                            userSettings[capID] = oneValue;
                        }
                    }
                }
            }
            #region  异常处理
            catch (System.Xml.XPath.XPathException e)
            {
                logger.Error("配置文件读取失败:" + e.Message);
                return(false);
            }
            catch (ArgumentException e)
            {
                logger.Error("配置文件读取失败:" + e.Message);
                return(false);
            }
            #endregion
            return(true);
        }
      public TwainCapability(TwainDevice twain, TwIdentity dataSourceId, TwCap capType)
      {
        fTwain = twain;
        fDataSourceId = dataSourceId;
        fCapType = capType;
        fValueType = TwType.DontCare16;

        TwCapability cap = new TwCapability(capType);

        if(fTwain.GetDataSourceAvailableCapabilityValues(dataSourceId, cap))
        {
          fValueType = cap.GetValueType();

          Items = new List<object>();

          int numItems = cap.GetNumItems();

          for(int i = 0; i < numItems; i++)
          {
            Items.Add(cap.GetItem(i));
          }

          MinValue = cap.GetMinValue();
          MaxValue = cap.GetMaxValue();
          StepSize = cap.GetStepSize();
          fCurrentValue = cap.GetCurrentValue();
        }
      }
Beispiel #24
0
 /// <summary>
 /// Gets the capability.
 /// </summary>
 /// <typeparam name="T">Type of a capability value.</typeparam>
 /// <param name="capability">The capability.</param>
 /// <returns>Instance of XDs class.</returns>
 public XCapability <T> GetCapability <T>(TwCap capability)
 {
     return(XCapability <T> .Create(this, capability));
 }
 public IntPtr contentValuePtr; //数据类型所指向的句柄
 public TwCapability(TwCap capID)
 {
     this.capID           = capID;
     this.contentType     = TwOn.DontCare;
     this.contentValuePtr = IntPtr.Zero;
 }
 public CapabilityAttribute(TwCap cap)
 {
     this.Cap = cap;
 }
 public Capability(Twain32 twain, TwCap cap)
 {
     this._Twain32 = twain;
     this._Cap     = cap;
 }
Beispiel #28
0
 // TW_CAPABILITY
 public TwCapability( TwCap cap )
 {
     Cap = (short) cap;
     ConType = -1;
 }
 public TwCapability(TwCap cap)
   : this(cap, TwType.DontCare16, null)
 {
 }
Beispiel #30
0
 /// <summary>
 /// Возвращает значение для указанного capability (возможность).
 /// </summary>
 /// <param name="capability">Значение перечисления TwCap.</param>
 /// <returns>В зависимости от значение capability, могут быть возвращены: тип-значение, массив, <see cref="Twain32.Range">диапазон</see>, <see cref="Twain32.Enumeration">перечисление</see>.</returns>
 /// <exception cref="TwainException">Возбуждается в случае возникновения ошибки во время операции.</exception>
 public object GetCap(TwCap capability) {
     if((this._TwainState&StateFlag.DSOpen)!=0) {
         using(TwCapability _cap=new TwCapability(capability)) {
             TwRC _rc=this.DsCap(this._appid,this._srcds,TwDG.Control,TwDAT.Capability,TwMSG.Get,_cap);
             if(_rc==TwRC.Success) {
                 switch(_cap.ConType) {
                     case TwOn.One:
                         _TwOneValue _one_val=(_TwOneValue)_cap.GetValue();
                         return Twain32._Convert(_one_val.Item,_one_val.ItemType);
                     case TwOn.Range:
                         return Range.CreateRange((_TwRange)_cap.GetValue());
                     case TwOn.Array:
                     case TwOn.Enum:
                         object _val=_cap.GetValue();
                         TwType _item_type=(TwType)_val.GetType().GetProperty("ItemType").GetValue(_val,null);
                         object[] _result_array=new object[(int)_val.GetType().GetProperty("NumItems").GetValue(_val,null)];
                         object _items=_val.GetType().GetProperty("ItemList").GetValue(_val,null);
                         MethodInfo _items_getter=_items.GetType().GetMethod("GetValue",new Type[]{typeof(int)});
                         for(int i=0;i<_result_array.Length;i++) {
                             _result_array[i]=Twain32._Convert(_items_getter.Invoke(_items,new object[] { i }),_item_type);
                         }
                         if(_cap.ConType==TwOn.Array) {
                             return _result_array;
                         } else {
                             return Enumeration.CreateEnumeration(
                                 _result_array,
                                 (int)_val.GetType().GetProperty("CurrentIndex").GetValue(_val,null),
                                 (int)_val.GetType().GetProperty("DefaultIndex").GetValue(_val,null));
                         }
                         
                 }
                 return _cap.GetValue();
             } else {
                 throw new TwainException(this._GetStatus());
             }
         }
     } else {
         throw new TwainException("Источник данных не открыт.");
     }
 }
Beispiel #31
0
          //
          // Summary:
          // Sets the value for the specified Saraff.Twain.TwCap
          //
          // Parameters:
          // Capability:
          // Enumeration value Saraff.Twain.TwCap.
          //
          // CapabilityValue:
          // Set value.
          //
          // Exceptions:
          // Saraff.Twain.TwainException:
          // Raised when an error occurs during the operation.
         public void SetCap(TwCap capability, Twain32.Range capabilityValue);
 public bool SetDataSourceCapability(TwIdentity dataSourceId, TwCap capType, TwType valueType, object value)
 {
   TwCapability cap = new TwCapability(capType, valueType, value);
   return SetDataSourceCapability(dataSourceId, cap);
 }
Beispiel #33
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TwCapability"/> class.
 /// </summary>
 /// <param name="cap">The cap.</param>
 public TwCapability(TwCap cap)
 {
     this.Cap     = cap;
     this.ConType = TwOn.DontCare;
 }
      public object GetDataSourceCapability(TwIdentity dataSourceId, TwCap capType)
      {
        object result = null;
        TwCapability cap = new TwCapability(capType);

        if(GetDataSourceCapability(dataSourceId, cap))
        {
          result = cap.GetCurrentValue();
        }
        return result;
      }
Beispiel #35
0
 public TwCapability(TwCap cap, short sval, TwType twtype)
 {
 }
Beispiel #36
0
 {                                                                           // TW_CAPABILITY
     public TwCapability(TwCap cap)
     {
         Cap     = (short)cap;
         ConType = -1;
     }
Beispiel #37
0
        /// <summary>
        /// Устанавливает значение для указанного <see cref="TwCap">capability</see>
        /// </summary>
        /// <param name="capability">Значение перечисления <see cref="TwCap"/>.</param>
        /// <param name="capabilityValue">Устанавливаемое значение.</param>
        /// <exception cref="TwainException">Возбуждается в случае возникновения ошибки во время операции.</exception>
        public void SetCap(TwCap capability,object[] capabilityValue) {
            if((this._TwainState&StateFlag.DSOpen)!=0) {
                using(TwCapability _cap=new TwCapability(
                    capability,
                    new _TwArray() {
                        ItemType=Twain32._Convert(capabilityValue[0].GetType()), NumItems=capabilityValue.Length
                    },
                    capabilityValue)) {

                    TwRC _rc=this.DsCap(this._appid,this._srcds,TwDG.Control,TwDAT.Capability,TwMSG.Set,_cap);
                    if(_rc!=TwRC.Success) {
                        throw new TwainException(this._GetStatus());
                    }
                }
            } else {
                throw new TwainException("Источник данных не открыт.");
            }
        }
 private Capability <T> CreateCapability <T>(Twain32 twain, TwCap cap) where T : struct
 {
     return(Activator.CreateInstance(typeof(Capability <T>), new object[] { twain, cap }) as Capability <T>);
 }
      public TwCapability(TwCap cap, TwType valueType, object value)
      {
        CapabilityType = cap;
        ContainerType = TwOn.One;

        value = CastFromCapabilityType(value);

        TwOneValue container = new TwOneValue(valueType, value);

        Handle = LibKernel32.GlobalAlloc(0x42, Marshal.SizeOf(container));

        try
        {
          IntPtr pv = LibKernel32.GlobalLock(Handle);
          Marshal.StructureToPtr(container, pv, true);
        }
        finally
        {
          LibKernel32.GlobalUnlock(Handle);
        }
      }
Beispiel #40
0
 /// <summary>
 /// Устанавливает значение для указанного <see cref="TwCap">capability</see>
 /// </summary>
 /// <param name="capability">Значение перечисления <see cref="TwCap"/>.</param>
 /// <param name="capabilityValue">Устанавливаемое значение.</param>
 /// <exception cref="TwainException">Возбуждается в случае возникновения ошибки во время операции.</exception>
 public void SetCap(TwCap capability,Range capabilityValue) {
     if((this._TwainState&StateFlag.DSOpen)!=0) {
         using(TwCapability _cap=new TwCapability(capability,capabilityValue.ToTwRange())) {
             TwRC _rc=this.DsCap(this._appid,this._srcds,TwDG.Control,TwDAT.Capability,TwMSG.Set,_cap);
             if(_rc!=TwRC.Success) {
                 throw new TwainException(this._GetStatus());
             }
         }
     } else {
         throw new TwainException("Источник данных не открыт.");
     }
 }
Beispiel #41
0
 public TwCapability( TwCap cap, short sval )
 {
     Cap = (short) cap;
     ConType = (short) TwOn.One;
     Handle = Twain.GlobalAlloc( 0x42, 6 );
     IntPtr pv = Twain.GlobalLock( Handle );
     Marshal.WriteInt16( pv, 0, (short) TwType.Int16 );
     Marshal.WriteInt32( pv, 2, (int) sval );
     Twain.GlobalUnlock( Handle );
 }
Beispiel #42
0
        /// <summary>
        /// Устанавливает значение для указанного <see cref="TwCap">capability</see>
        /// </summary>
        /// <param name="capability">Значение перечисления <see cref="TwCap"/>.</param>
        /// <param name="capabilityValue">Устанавливаемое значение.</param>
        /// <exception cref="TwainException">Возбуждается в случае возникновения ошибки во время операции.</exception>
        public void SetCap(TwCap capability,Enumeration capabilityValue) {
            if((this._TwainState&StateFlag.DSOpen)!=0) {
                using(TwCapability _cap=new TwCapability(
                    capability,
                    new _TwEnumeration() {
                        ItemType=Twain32._Convert(capabilityValue.Items[0].GetType()),
                        NumItems=capabilityValue.Count,
                        CurrentIndex=capabilityValue.CurrentIndex,
                        DefaultIndex=capabilityValue.DefaultIndex
                    },
                    capabilityValue.Items)) {

                    TwRC _rc=this.DsCap(this._appid,this._srcds,TwDG.Control,TwDAT.Capability,TwMSG.Set,_cap);
                    if(_rc!=TwRC.Success) {
                        throw new TwainException(this._GetStatus());
                    }
                }
            } else {
                throw new TwainException("Источник данных не открыт.");
            }
        }