Leadtools.Wia Send comments on this topic. | Back to Introduction - All Topics | Help Version 16.5.9.25
EnumCapabilities Method
See Also  Example
Leadtools.Wia Namespace > WiaSession Class : EnumCapabilities Method



item

Handle to the item to get its capabilities. Retrieve this parameter by either calling the WiaSession.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.
item

Handle to the item to get its capabilities. Retrieve this parameter by either calling the WiaSession.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.
yes

Syntax

Visual Basic (Declaration) 
Public Sub EnumCapabilities( _
   ByVal item As Object, _
   ByVal flags As WiaEnumCapabilitiesFlags _
) 
Visual Basic (Usage)Copy Code
Dim instance As WiaSession
Dim item As Object
Dim flags As WiaEnumCapabilitiesFlags
 
instance.EnumCapabilities(item, flags)
C# 
public void EnumCapabilities( 
   object item,
   WiaEnumCapabilitiesFlags flags
)
C++/CLI 
public:
void EnumCapabilities( 
   Object^ item,
   WiaEnumCapabilitiesFlags flags
) 

Parameters

item

Handle to the item to get its capabilities. Retrieve this parameter by either calling the WiaSession.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.

Example

Visual BasicCopy Code
Dim session As WiaSession
Public Sub EnumCapabilitiesExample(ByVal parent As IWin32Window)
   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

   session.GetRootItem(Nothing)
   If Not session.RootItem Is Nothing Then
      session.EnumCapabilities(session.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 received capability property value(s).
      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: "

         If (e.Capability.VariableType And WiaVariableTypes.Bstr) = WiaVariableTypes.Bstr Then
            session.GetPropertyString(session.RootItem, Nothing, e.Capability.PropertyId)
            strPropValue &= session.StringValue
         ElseIf (e.Capability.VariableType And WiaVariableTypes.Clsid) = WiaVariableTypes.Clsid Then
            session.GetPropertyGuid(session.RootItem, Nothing, e.Capability.PropertyId)
            strPropValue &= session.GuidValue.ToString()
         Else
            session.GetPropertyLong(session.RootItem, Nothing, e.Capability.PropertyId)
            strPropValue &= session.LongValue.ToString()
         End If
      End If

      Console.WriteLine(strPropValue)
   End If
End Sub
C#Copy Code
WiaSession session; 
public void EnumCapabilitiesExample(IWin32Window parent) 

   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); 
 
   session.GetRootItem(null); 
   if (session.RootItem != null) 
   { 
      session.EnumCapabilities(session.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 appropriate GetPropertyXXX method according to the received variable type. 
      { 
         strPropValue = "Property Value: "; 
 
         if ((e.Capability.VariableType & WiaVariableTypes.Bstr) == WiaVariableTypes.Bstr) 
         { 
            session.GetPropertyString(session.RootItem, null, e.Capability.PropertyId); 
            strPropValue += session.StringValue; 
         } 
         else if ((e.Capability.VariableType & WiaVariableTypes.Clsid) == WiaVariableTypes.Clsid) 
         { 
            session.GetPropertyGuid(session.RootItem, null, e.Capability.PropertyId); 
            strPropValue += session.GuidValue.ToString(); 
         } 
         else 
         { 
            session.GetPropertyLong(session.RootItem, null, e.Capability.PropertyId); 
            strPropValue += session.LongValue.ToString(); 
         } 
      } 
 
      Console.WriteLine(strPropValue); 
   } 
}

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 WiaSession.EnumCapabilitiesEvent event. Add this event when enumerating the device's capabilities. To cancel the enumeration proces, add the WiaSession.EnumCapabilitiesEvent event and then set the Cancel member of the WiaEnumCapabilitiesEventArgs to true.

For more information, refer to Managing WIA Sources.

Requirements

Target Platforms: Microsoft .NET Framework 3.0, Windows 2000, Windows XP, Windows Vista, Windows Server 2003 family, Windows Server 2008 family

See Also