public bool Stop { get; set; }
true to continue firing the EnumCapabilitiesEvent event; false to stop firing the EnumCapabilitiesEvent event.
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);}}