←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#
VB
C++
public void EnumCapabilities(  
   object item, 
   Leadtools.Wia.WiaEnumCapabilitiesFlags flags 
) 
Public Sub EnumCapabilities( _ 
   ByVal item As Object, _ 
   ByVal flags As Leadtools.Wia.WiaEnumCapabilitiesFlags _ 
) 
public: 
void EnumCapabilities(  
   Object^ item, 
   Leadtools.Wia.WiaEnumCapabilitiesFlags 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#
VB
Imports Leadtools 
      Imports Leadtools.Codecs 
      Imports Leadtools.Wia 
 
      Dim session As WiaSession 
      <TestMethod()> _ 
#If Not LEADTOOLS_V19_OR_LATER Then 
      Public Sub EnumCapabilitiesExample(ByVal parent As IWin32Window) 
#Else 
      Public Sub EnumCapabilitiesExample(ByVal parent As IntPtr) 
#End If ' #If LEADTOOLS_V19_OR_LATER Then 
         If (Not WiaSession.IsAvailable(WiaVersion.Version1)) Then 
            MessageBox.Show("WIA version 1.0 not installed.") 
            Return 
         End If 
         session = New WiaSession() 
         session.Startup(WiaVersion.Version1) 
 
         Dim res As DialogResult = session.SelectDeviceDlg(parent, WiaDeviceType.Default, WiaSelectSourceFlags.NoDefault) 
         If res <> DialogResult.OK Then 
            MessageBox.Show("Error selecting WIA device.") 
            session.Shutdown() 
            Return 
         End If 
 
         AddHandler session.EnumCapabilitiesEvent, AddressOf session_EnumCapabilitiesEvent 
 
         Dim rootItem As Object = session.GetRootItem(Nothing) 
         If Not rootItem Is Nothing Then 
            session.EnumCapabilities(rootItem, WiaEnumCapabilitiesFlags.None) 
         End If 
 
         RemoveHandler session.EnumCapabilitiesEvent, AddressOf session_EnumCapabilitiesEvent 
 
         session.Shutdown() 
      End Sub 
 
      Private Sub session_EnumCapabilitiesEvent(ByVal sender As Object, ByVal e As WiaEnumCapabilitiesEventArgs) 
         Dim strMsg As String = String.Empty 
         Dim strPropAccess As String = String.Empty 
         Dim strPropValue As String = String.Empty 
 
         strMsg = String.Format("WIA Capabilities count = {0}" & Constants.vbLf, e.CapabilitiesCount) 
         Console.WriteLine(strMsg) 
 
         ' print out the received capability information into the console window. 
         If e.CapabilitiesCount > 0 Then 
            Console.WriteLine("Capability information:" & Constants.vbLf) 
 
            ' print out received capability property ID. 
            strMsg = String.Format("Property ID:" & Constants.vbTab & "{0}" & Constants.vbLf, e.Capability.PropertyId.ToString()) 
            Console.WriteLine(strMsg) 
 
            ' print out received capability property Name. 
            strMsg = String.Format("Property Name:" & Constants.vbTab & "{0}" & Constants.vbLf, e.Capability.PropertyName) 
            Console.WriteLine(strMsg) 
 
            ' print out received capability property access. 
            If (e.Capability.PropertyAttributes And WiaPropertyAttributesFlags.ReadWrite) = WiaPropertyAttributesFlags.ReadWrite Then 
               strPropAccess &= "ReadWrite" 
            Else 
               If (e.Capability.PropertyAttributes And WiaPropertyAttributesFlags.Read) = WiaPropertyAttributesFlags.Read Then 
                  strPropAccess &= "Read" 
               End If 
 
               If (e.Capability.PropertyAttributes And WiaPropertyAttributesFlags.Write) = WiaPropertyAttributesFlags.Write Then 
                  If (Not String.IsNullOrEmpty(strPropAccess)) Then 
                     strPropAccess &= " |   Write" 
                  Else 
                     strPropAccess &= "Write" 
                  End If 
               End If 
            End If 
 
            If (e.Capability.PropertyAttributes And WiaPropertyAttributesFlags.Cashable) = WiaPropertyAttributesFlags.Cashable Then 
               If (Not String.IsNullOrEmpty(strPropAccess)) Then 
                  strPropAccess &= " |   Cashable" 
               Else 
                  strPropAccess &= "Cashable" 
               End If 
            End If 
 
            strMsg = String.Format("Property Access:" & Constants.vbTab & "{0}" & Constants.vbLf, strPropAccess) 
            Console.WriteLine(strMsg) 
 
            ' print out the capability property value(s) that were received. 
            If (e.Capability.PropertyAttributes And WiaPropertyAttributesFlags.List) = WiaPropertyAttributesFlags.List Then 
               strPropValue = "Property List Values:" & Constants.vbLf 
               Dim i As Integer = 0 
               Do While i < e.Capability.Values.ListValues.ValuesCount 
                  If (e.Capability.VariableType And WiaVariableTypes.Bstr) = WiaVariableTypes.Bstr Then 
                     strPropValue = strPropValue & Constants.vbTab + Convert.ToString(e.Capability.Values.ListValues.Values(i)) + Constants.vbLf 
                  ElseIf (e.Capability.VariableType And WiaVariableTypes.Clsid) = WiaVariableTypes.Clsid Then 
                     Dim guidValue As System.Guid = CType(e.Capability.Values.ListValues.Values(i), System.Guid) 
                     strPropValue = strPropValue & Constants.vbTab + guidValue.ToString() + Constants.vbLf 
                  Else 
                     strPropValue = strPropValue & Constants.vbTab + (Convert.ToInt32(e.Capability.Values.ListValues.Values(i))).ToString() & Constants.vbLf 
                  End If 
                  i += 1 
               Loop 
            ElseIf (e.Capability.PropertyAttributes And WiaPropertyAttributesFlags.Range) = WiaPropertyAttributesFlags.Range Then 
               strPropValue = String.Format("Property Range Values:" & Constants.vbLf + Constants.vbTab & "Minimum Value: {0}" & Constants.vbLf + Constants.vbTab & "Maximum Value: {1}" & Constants.vbLf, _ 
                     e.Capability.Values.RangeValues.MinimumValue, e.Capability.Values.RangeValues.MaximumValue) 
            ElseIf (e.Capability.PropertyAttributes And WiaPropertyAttributesFlags.Flag) = WiaPropertyAttributesFlags.Flag Then 
               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 appropriate GetPropertyXXX method according to the received variable type. 
               strPropValue = "Property Value: " 
 
               Dim rootItem As Object = session.GetRootItem(Nothing) 
 
               If (e.Capability.VariableType And WiaVariableTypes.Bstr) = WiaVariableTypes.Bstr Then 
                  Dim stringValue As String = session.GetPropertyString(rootItem, Nothing, e.Capability.PropertyId) 
                  strPropValue &= stringValue 
               ElseIf (e.Capability.VariableType And WiaVariableTypes.Clsid) = WiaVariableTypes.Clsid Then 
                  Dim guidValue As Guid = session.GetPropertyGuid(rootItem, Nothing, e.Capability.PropertyId) 
                  strPropValue &= guidValue.ToString() 
               Else 
                  Dim longValue As Integer = session.GetPropertyLong(rootItem, Nothing, e.Capability.PropertyId) 
                  strPropValue &= longValue.ToString() 
               End If 
            End If 
 
            Console.WriteLine(strPropValue) 
         End If 
      End Sub 
using Leadtools; 
      using Leadtools.Codecs; 
      using Leadtools.Wia; 
 
      WiaSession session; 
      [TestMethod] 
#if !LEADTOOLS_V19_OR_LATER 
      public void EnumCapabilitiesExample(IWin32Window parent) 
#else 
      public void EnumCapabilitiesExample(IntPtr parent) 
#endif // #if !LEADTOOLS_V19_OR_LATER 
      { 
         if (!WiaSession.IsAvailable(WiaVersion.Version1)) 
         { 
            MessageBox.Show("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) 
         { 
            MessageBox.Show("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

Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.
Leadtools.Wia Assembly
Click or drag to resize