我正在使用此代码从本地扫描仪进行扫描:
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);
如何为我有其名称的网络扫描仪执行此操作?
要使用 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 属性。