但是在随机机器上尝试传输图像结果时-WIA报告“文件存在。-HRESULT:0x80070050”。在所有存在此问题的计算机上,该软件的初始使用都是成功的。我能够成功连接到扫描仪,查询名称、制造商等。我确定如果我在另一个用户帐户下运行代码(使用右键单击以管理员身份运行),我可以成功扫描图像。但是,在具有提升权限的同一用户帐户下运行代码会导致相同的错误。注意:异常发生在Item1.Transfer-所以直到此时我还没有为WIA提供文件路径,所以这不是它所指的文件。WIA.DeviceManagerDeviceManager1=newWIA.DeviceManagerClass();WIA.DeviceScanner=DeviceManager1.DeviceInfos[i].Connect();WIA.ItemItem1=null;foreach(WIA.ItemCurrentIteminScanner.Items){Item1=CurrentItem;休息;}WIA.ImageFileImage1=newWIA.ImageFile();//尝试捕获扫描图像1=(WIA.ImageFile)Item1.Transfer(WIA.FormatID.wiaFormatJPEG);//保存到文件Image1.SaveFile(Path.Combine(Path.GetTempPath(),Path.GetRandomFileName()+@"scan"+DateTime.Now.Ticks+".jpg");最合乎逻辑的答案是WIA存储图像捕获期间的临时文件——我不知道——它不能覆盖以前的扫描。有谁知道这可能是什么?解决了。事实证明,WIA实际上将捕获的图像作为临时文件存储在Usersprofiletemp文件夹中,因此:Path.GetTempPath()或C:\Users\USER_PROFILE\AppData\Local\Temp文件存储为imgXXXX.tmp中我们的例子——这导致问题的原因,似乎没有在网上任何地方记录,是我们每隔几秒轮询一次扫描仪——创建一个临时文件,因为只有4x,在WIA之前可以有一个65K的临时文件会出错。设置一个程序来清除这个临时文件夹中的旧图像文件立即解决了这个问题。当我尝试使用WIA从相机设备读取图像时,我遇到了同样的问题。正确的解决方案是正确处理WIA.ImageFile。这将清理tmp文件。Marshal.ReleaseComObject(Image1);在CodePrjoct上找到这个链接以上是C#学习教程:C#WIAimagescanningfailed,HRESULT:0x80070050分享的所有内容,如果对大家有用需要了解更多C#学习教程,希望大家多多付出关注吧——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
