←Select platform

EnumCapabilities Method

Summary
Enumerates all of the available WIA driver capabilities and properties and determines the available values for each one.

Syntax
C#
C++/CLI
Python
public void EnumCapabilities( 
   object item, 
   WiaEnumCapabilitiesFlags flags 
) 
public: 
void EnumCapabilities(  
   Object^ item, 
   WiaEnumCapabilitiesFlags flags 
)  
def EnumCapabilities(self,flags): 

Parameters

item
Handle to the item to get its capabilities. Retrieve this parameter by either calling the GetRootItem method to get the device's root item itself or by enumerating the child items of the device through a call to EnumChildItems method.

flags
Reserved for future use. Pass WiaEnumCapabilitiesFlags.None.

Remarks

This function will enumerate all of the available WIA driver capabilities and properties (and determine the available values for each one) for the specified acquisition source.

Each enumerated capability will be sent to the user through the EnumCapabilitiesEvent event. Add this event when enumerating the device's capabilities. To cancel the enumeration proces, add the EnumCapabilitiesEvent event and then set the Cancel member of the WiaEnumCapabilitiesEventArgs to true.

For more information, refer to Managing WIA Sources.

Example
C#
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Wia; 
 
 
WiaSession session; 
       
public void EnumCapabilitiesExample(IntPtr parent) 
{ 
   if (!WiaSession.IsAvailable(WiaVersion.Version1)) 
   { 
      Console.WriteLine("WIA version 1.0 not installed."); 
      return; 
   } 
 
   session = new WiaSession(); 
   session.Startup(WiaVersion.Version1); 
 
   DialogResult res = session.SelectDeviceDlg(parent, WiaDeviceType.Default, WiaSelectSourceFlags.NoDefault); 
   if (res != DialogResult.OK) 
   { 
      Console.WriteLine("Error selecting WIA device."); 
      session.Shutdown(); 
      return; 
   } 
 
   session.EnumCapabilitiesEvent += new EventHandler<WiaEnumCapabilitiesEventArgs>(wiaSession_EnumCapabilitiesEvent); 
 
   object rootItem = session.GetRootItem(null); 
   if (rootItem != null) 
   { 
      session.EnumCapabilities(rootItem, WiaEnumCapabilitiesFlags.None); 
   } 
 
   session.EnumCapabilitiesEvent -= new EventHandler<WiaEnumCapabilitiesEventArgs>(wiaSession_EnumCapabilitiesEvent); 
 
   session.Shutdown(); 
} 
 
void wiaSession_EnumCapabilitiesEvent(object sender, WiaEnumCapabilitiesEventArgs e) 
{ 
   string strMsg = string.Empty; 
   string strPropAccess = string.Empty; 
   string strPropValue = string.Empty; 
 
   strMsg = string.Format("WIA Capabilities count = {0}\n", e.CapabilitiesCount); 
   Console.WriteLine(strMsg); 
 
   // print out the received capability information into the console window. 
   if (e.CapabilitiesCount > 0) 
   { 
      Console.WriteLine("Capability information:\n"); 
 
      // print out received capability property ID. 
      strMsg = string.Format("Property ID:\t{0}\n", e.Capability.PropertyId.ToString()); 
      Console.WriteLine(strMsg); 
 
      // print out received capability property Name. 
      strMsg = string.Format("Property Name:\t{0}\n", e.Capability.PropertyName); 
      Console.WriteLine(strMsg); 
 
      // print out received capability property access. 
      if ((e.Capability.PropertyAttributes & WiaPropertyAttributesFlags.ReadWrite) == WiaPropertyAttributesFlags.ReadWrite) 
      { 
         strPropAccess += "ReadWrite"; 
      } 
      else 
      { 
         if ((e.Capability.PropertyAttributes & WiaPropertyAttributesFlags.Read) == WiaPropertyAttributesFlags.Read) 
            strPropAccess += "Read"; 
 
         if ((e.Capability.PropertyAttributes & WiaPropertyAttributesFlags.Write) == WiaPropertyAttributesFlags.Write) 
         { 
            if (!string.IsNullOrEmpty(strPropAccess)) 
            { 
               strPropAccess += " | Write"; 
            } 
            else 
            { 
               strPropAccess += "Write"; 
            } 
         } 
      } 
 
      if ((e.Capability.PropertyAttributes & WiaPropertyAttributesFlags.Cashable) == WiaPropertyAttributesFlags.Cashable) 
      { 
         if (!string.IsNullOrEmpty(strPropAccess)) 
         { 
            strPropAccess += " | Cashable"; 
         } 
         else 
         { 
            strPropAccess += "Cashable"; 
         } 
      } 
 
      strMsg = string.Format("Property Access:\t{0}\n", strPropAccess); 
      Console.WriteLine(strMsg); 
 
      // print out received capability property value(s). 
      if ((e.Capability.PropertyAttributes & WiaPropertyAttributesFlags.List) == WiaPropertyAttributesFlags.List) 
      { 
         strPropValue = "Property List Values:\n"; 
         for (int i = 0; i < e.Capability.Values.ListValues.ValuesCount; i++) 
         { 
            if ((e.Capability.VariableType & WiaVariableTypes.Bstr) == WiaVariableTypes.Bstr) 
            { 
               strPropValue = strPropValue + "\t" + Convert.ToString(e.Capability.Values.ListValues.Values[i]) + "\n"; 
            } 
            else if ((e.Capability.VariableType & WiaVariableTypes.Clsid) == WiaVariableTypes.Clsid) 
            { 
               System.Guid guidValue = (System.Guid)e.Capability.Values.ListValues.Values[i]; 
               strPropValue = strPropValue + "\t" + guidValue.ToString() + "\n"; 
            } 
            else 
            { 
               strPropValue = strPropValue + "\t" + (Convert.ToInt32(e.Capability.Values.ListValues.Values[i])).ToString() + "\n"; 
            } 
         } 
      } 
      else if ((e.Capability.PropertyAttributes & WiaPropertyAttributesFlags.Range) == WiaPropertyAttributesFlags.Range) 
      { 
         strPropValue = string.Format("Property Range Values:\n\tMinimum Value: {0}\n\tMaximum Value: {1}\n", e.Capability.Values.RangeValues.MinimumValue, e.Capability.Values.RangeValues.MaximumValue); 
      } 
      else if ((e.Capability.PropertyAttributes & WiaPropertyAttributesFlags.Flag) == WiaPropertyAttributesFlags.Flag) 
      { 
         strPropValue = e.Capability.Values.FlagsValues.FlagValues.ToString(); 
      } 
      else  // The property value is of type "None", and in this case you can retrieve the value by calling the GetPropertyXXX method appropriate for the received variable type. 
      { 
         strPropValue = "Property Value: "; 
 
         object rootItem = session.GetRootItem(null); 
 
         if ((e.Capability.VariableType & WiaVariableTypes.Bstr) == WiaVariableTypes.Bstr) 
         { 
            string stringValue = session.GetPropertyString(rootItem, null, e.Capability.PropertyId); 
            strPropValue += stringValue; 
         } 
         else if ((e.Capability.VariableType & WiaVariableTypes.Clsid) == WiaVariableTypes.Clsid) 
         { 
            Guid guidValue = session.GetPropertyGuid(rootItem, null, e.Capability.PropertyId); 
            strPropValue += guidValue.ToString(); 
         } 
         else 
         { 
            int longValue = session.GetPropertyLong(rootItem, null, e.Capability.PropertyId); 
            strPropValue += longValue.ToString(); 
         } 
      } 
 
      Console.WriteLine(strPropValue); 
   } 
} 
Requirements

Target Platforms

Help Version 22.0.2023.3.31
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Wia Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.