/// <summary> /// Are there any images left? Are you using a Duplex or AutomaticDocumentFeeder scanner? /// </summary> public bool HasMorePages() { bool hasMorePages = false; if (_scannerSettings.IsDuplex || _scannerSettings.IsAutomaticDocumentFeeder) { var status = _wiaScannerDeviceSettings.GetPropertyValue <int>("Document Handling Status"); hasMorePages = (status & WiaDpsDocumentHandlingStatus.FEED_READY) != 0; } return(hasMorePages); }
/// <summary> /// Lists the connected scanners to the system. /// </summary> public static IList <ScannerSettings> GetScannerDevices() { var scanners = new List <ScannerSettings>(); var deviceInfos = new DeviceManager().DeviceInfos; for (var i = 1; i <= deviceInfos.Count; i++) // Using a regular for loop to avoid `System.IO.FileNotFoundException: Could not load file or assembly CustomMarshalers` in .NET Core 2x apps. { var info = deviceInfos[i]; if (info.Type != WiaDeviceType.ScannerDeviceType) { continue; } var device = info.Connect(); var scanner = device.Items[1]; var wiaSettings = new WiaSettings(device.Properties); var defaultSettings = new WiaSettings(scanner.Properties); var caps = wiaSettings.GetPropertyValue <int>("Document Handling Capabilities"); scanners.Add(new ScannerSettings { Name = info.Properties["Description"].get_Value().ToString(), Id = info.DeviceID, SupportedResolutions = getAvailableResolutions(defaultSettings), ScannerDeviceSettings = wiaSettings.ExtendedProperties, ScannerPictureSettings = defaultSettings.ExtendedProperties, IsAutomaticDocumentFeeder = (caps & (int)WiaDpsDocumentHandlingSelect.FEEDER) != 0, IsDuplex = (caps & (int)WiaDpsDocumentHandlingSelect.DUPLEX) != 0, IsFlatbed = (caps & (int)WiaDpsDocumentHandlingSelect.FLATBED) != 0, SupportedEvents = getDeviceEvents(device.Events), SupportedTransferFormats = getSupportedTransferFormats(scanner) }); Marshal.ReleaseComObject(device); Marshal.ReleaseComObject(scanner); } return(scanners); }