public WiaPropertyAttributesFlags PropertyAttributes { get; }
The attributes for the enumerated capability.
Gets the attributes for the enumerated capability like the capability value type (Flag value, List value or Range value) or the property access (Read, Write, Read/Write).
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);
}
}