- 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 Leadtools.Wia.WiaSession.EnumChildItems method.
- flags
- Reserved for future use, pass WiaEnumCapabilitiesFlags.None.
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 Leadtools.Wia.WiaSession.EnumChildItems method.
- flags
- Reserved for future use, pass WiaEnumCapabilitiesFlags.None.
Visual Basic | Copy 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 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 |
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); 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); } } |
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.
Target Platforms: Microsoft .NET Framework 2.0, Windows 2000, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7