yes
Syntax
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 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
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)
If e.CapabilitiesCount > 0 Then
Console.WriteLine("Capability information:" & Constants.vbLf)
strMsg = String.Format("Property ID:" & Constants.vbTab & "{0}" & Constants.vbLf, e.Capability.PropertyId.ToString())
Console.WriteLine(strMsg)
strMsg = String.Format("Property Name:" & Constants.vbTab & "{0}" & Constants.vbLf, e.Capability.PropertyName)
Console.WriteLine(strMsg)
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)
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
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
Requirements
Target Platforms: Microsoft .NET Framework 3.0, Windows 2000, Windows XP, Windows Vista, Windows Server 2003 family, Windows Server 2008 family
See Also