在C#中,如何在网络扫描仪/复印机上进行扫描?

问题描述 投票:0回答:1

我正在使用此代码从本地扫描仪进行扫描:

WIA.CommonDialog wiaDialog = new WIA.CommonDialog();
Device device = null;

WIA.DeviceManager wiaDeviceManager = new WIA.DeviceManager();
WIA.IDeviceInfos wiaDevices = wiaDeviceManager.DeviceInfos;
            
foreach (WIA.DeviceInfo wiaDeviceInfo in wiaDevices)
{
    string scannerName = wiaDeviceInfo.Properties["Name"].get_Value().ToString();
    
    if (wiaDeviceInfo.Type == WIA.WiaDeviceType.ScannerDeviceType && scannerName == targetScannerName)
    {
        device = wiaDeviceInfo.Connect();
        break;
    }
}

Item item = device.Items[1] as Item;

WIA.ImageFile image = (ImageFile)wiaDialog.ShowTransfer(item, "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}", false);

如何为我有其名称的网络扫描仪执行此操作?

c# .net asp.net-mvc asp.net-core .net-core
1个回答
0
投票

要使用 WIA(Windows 图像采集)从网络扫描仪进行扫描,您需要使用其网络路径或 IP 地址连接到网络扫描仪,而不是直接通过 DeviceManager 连接。您可以通过以下方式修改代码来实现此目的:

WIA.CommonDialog wiaDialog = new WIA.CommonDialog();
Device device = null;

WIA.DeviceManager wiaDeviceManager = new WIA.DeviceManager();
WIA.DeviceInfo networkScannerDeviceInfo = null;

// Get the network scanner device info
foreach (WIA.DeviceInfo wiaDeviceInfo in wiaDeviceManager.DeviceInfos)
{
    string scannerName = wiaDeviceInfo.Properties["Name"].get_Value().ToString();
    
    // Check if the device is a scanner and matches the target scanner name
    if (wiaDeviceInfo.Type == WIA.WiaDeviceType.ScannerDeviceType && scannerName == targetScannerName)
    {
        networkScannerDeviceInfo = wiaDeviceInfo;
        break;
    }
}

// Connect to the network scanner
if (networkScannerDeviceInfo != null)
{
    // Get the network scanner's network path or IP address
    string networkScannerPath = networkScannerDeviceInfo.Properties["Network"].get_Value().ToString();

    // Connect to the network scanner using its network path or IP address
    device = wiaDeviceManager.Connect(networkScannerPath);
}

if (device != null)
{
    // Assuming you want to scan from the first item
    Item item = device.Items[1] as Item;

    // Show the scanning dialog and transfer the image
    WIA.ImageFile image = (ImageFile)wiaDialog.ShowTransfer(item, "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}", false);

    // Process the scanned image as needed
}
else
{
    Console.WriteLine("Failed to connect to the network scanner.");
}

我们迭代 DeviceInfos 以查找具有指定名称的网络扫描仪。 一旦找到,我们就会检索网络扫描仪的网络路径或 IP 地址。 然后,我们使用 DeviceManager.Connect 方法使用其网络路径或 IP 地址连接到网络扫描仪。 最后,我们照常进行扫描。 确保将“网络”替换为保存扫描仪网络信息的正确属性名称。这可能会有所不同,具体取决于特定的扫描仪型号及其 WIA 属性。

© www.soinside.com 2019 - 2024. All rights reserved.