我希望有人遇到过-我正在尝试使用WIA从文档扫描仪捕获图像,但是在尝试传输图像结果的随机计算机上-WIA报告“文件存在。-HRESULT:0x80070050)”。在所有出现此问题的计算机上,该软件的首次使用成功。

我能够成功连接到扫描仪,查询名称,制造商等。

如果已在其他用户帐户下运行代码(使用以管理员身份右键单击运行),则确定可以成功扫描图像。但是,在具有提升特权的相同用户帐户下运行代码会导致相同错误。

注意:在Item1.Transfer上发生异常-到目前为止,我还没有为WIA提供文件路径,因此它不能是它所指的文件。

WIA.DeviceManager DeviceManager1 = new WIA.DeviceManagerClass();
WIA.Device Scanner = DeviceManager1.DeviceInfos[i].Connect();

WIA.Item Item1 = null;
foreach (WIA.Item CurrentItem in Scanner.Items) {
    Item1 = CurrentItem;
    break;
}

WIA.ImageFile Image1 = new WIA.ImageFile();

//Attempt To Capture Scan
Image1 = (WIA.ImageFile)Item1.Transfer(WIA.FormatID.wiaFormatJPEG);

//Save To File
Image1.SaveFile(Path.Combine(Path.GetTempPath(), Path.GetRandomFileName() + @"\scan" + DateTime.Now.Ticks + ".jpg");


最合乎逻辑的答案是,WIA在图像捕获期间存储了一个临时文件(我不知道),并且它无法覆盖以前的扫描。有人知道这可能在哪里吗?

最佳答案

解决了。

事实证明,WIA实际上将捕获的图像作为临时文件存储在“用户”配置文件的temp文件夹中,因此:

Path.GetTempPath()


或C:\ Users \ USER_PROFILE \ AppData \ Local \ Temp \

文件以imgXXXX.tmp格式存储

在我们的案例中-导致问题的原因(似乎没有在网络上的任何地方记录在案)是因为我们每隔几秒钟就对扫描仪进行一次轮询-创建一个临时文件,因为只有4倍,所以最多WIA发生错误之前,最多可删除65K个临时文件。

设置例程以清除此temp文件夹中的旧图像文件,即可立即解决此问题。

关于c# - C#WIA图像扫描失败,出现HRESULT:0x80070050,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6121151/

10-11 11:45