Проблема с восстановить.dll & canon MF 3228
Я искал способ сканирования с помощью .net. Нашел такой скрипт
Этот скрипт корректно работает с Brother 7057 и Canon MF 3228
Option Explicit Const ScannerDeviceType = 1 Const ColorIntent = 1 Const wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}" Dim objDeviceManager Dim objDeviceInfos Dim objDevice Dim objImageFile Dim objImageProcess Dim strPath2Save Dim strFormat Dim intQuality Dim intDPI Dim intHorizontalSize Dim intVerticalSize strPath2Save = "D:\MyImage.jpg" ' Полное имя файла для сохранения strFormat = wiaFormatJPEG ' Формат файла — *.jpg intQuality = 85 ' Качество jpg intDPI = 150 ' Разрешение — 150 dpi Set objDeviceManager = WScript.CreateObject("WIA.DeviceManager") Set objDeviceInfos = objDeviceManager.DeviceInfos If objDeviceInfos.Count > 0 Then Set objDevice = WScript.CreateObject("WIA.CommonDialog").ShowSelectDevice(ScannerDeviceType, False, False) If Not objDevice Is Nothing Then With objDevice With .Items(1) With .Properties .Item("6146").Value = ColorIntent .Item("6147").Value = intDPI .Item("6148").Value = intDPI .Item("6149").Value = 0 .Item("6150").Value = 0 .Item("6151").Value = 1240 .Item("6152").Value = 1748 End With Set objImageFile = .Transfer() Set objImageProcess = WScript.CreateObject("WIA.ImageProcess") With objImageProcess With .Filters .Add objImageProcess.FilterInfos("Convert").FilterID With .Item(1).Properties .Item("FormatID").Value = strFormat .Item("Quality").Value = intQuality End With End With Set objImageFile = .Apply(objImageFile) End With End With End With With WScript.CreateObject("Scripting.FileSystemObject") If .FileExists(strPath2Save) Then .DeleteFile strPath2Save End If End With objImageFile.SaveFile strPath2Save WScript.Echo "Complete." Set objDevice = Nothing Else WScript.Echo "Cancel scanning by user" End If Else WScript.Echo "No connected devices" End If Set objDeviceManager = Nothing Set objDeviceInfos = Nothing WScript.Quit 0
Перевел эту суму на vb.net
С Broteher 7057 все работает нормально
С помощью Canon MF 3228 при попытке сканирования в цвете вы получаете черно-белое изображение со всей сканируемой областью (1240x1748), а при попытке сканирования в оттенках серого вы получите серый рисунок, но половину области сканирования (620x874)
Пожалуйста, помогите мне решить мою проблему
ПС
Английский - это не мой первый язык, извините
Для работы это в vb.net нужда wiaaut.dll
ПСС
Код на vb.net
Public Sub Scan() Const ScannerDeviceType = 1 Const ColorIntent = 1 Const wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}" Dim strPath2Save As String = "D:\MyImage.jpg" Dim strFormat As String = wiaFormatJPEG Dim intQuality As Integer = 85 Dim intDPI As Integer = 150 Dim intHorizontalSize As Integer = 1240 Dim intVerticalSize As Integer = 1748 Dim objDeviceManager As WIA.DeviceManager = CreateObject("WIA.DeviceManager") Dim objDeviceInfos = objDeviceManager.DeviceInfos If objDeviceInfos.Count > 0 Then Dim objDevice = CreateObject("WIA.CommonDialog").ShowSelectDevice(ScannerDeviceType, False, False) If Not objDevice Is Nothing Then objDevice.Items(1).Properties.Item("6146").Value = ColorIntent objDevice.Items(1).Properties.Item("6147").Value = intDPI objDevice.Items(1).Properties.Item("6148").Value = intDPI objDevice.Items(1).Properties.Item("6149").Value = 0 objDevice.Items(1).Properties.Item("6150").Value = 0 objDevice.Items(1).Properties.Item("6151").Value = intHorizontalSize objDevice.Items(1).Properties.Item("6152").Value = intVerticalSize Dim objImageFile As WIA.ImageFile = objDevice.Items(1).Transfer() Dim objImageProcess As WIA.ImageProcess = CreateObject("WIA.ImageProcess") 'objImageProcess.Filters.FilterInfos("Convert").FilterID() 'objImageProcess.Item(1).Properties.Item("FormatID").Value = strFormat 'objImageProcess.Item(1).Properties.Item("Quality").Value = intQuality ' objImageFile = objImageProcess.Apply(objImageFile) If CreateObject("Scripting.FileSystemObject").FileExists(strPath2Save) Then CreateObject("Scripting.FileSystemObject").DeleteFile(strPath2Save) End If objImageFile.SaveFile(strPath2Save) objDevice = Nothing Else End If Else End If objDeviceManager = Nothing objDeviceInfos = Nothing End Sub
Что я уже пробовал:
1) я позвонил в техническую поддержку Canon, но они не занимаются такими проблемами
2) Если вы запускаете скрипт как файл scan.vbs из самой программы, он работает, но обратной связи от программы нет, и во время процесса сканирования может появиться много других ошибок.
Richard Deeming
Если проблема заключается в вашем VB.NET перевод кода, тогда почему вы не показали нам этот код?
Нажмите кнопку "улучшить вопрос" и добавьте VB.NET версия вашего кода к вопросу.
__Radik__
Добавить vb.net код
Richard Deeming
Очевидным местом для начала был бы код "фильтров", который присутствует в вашем VBScript, но закомментирован в вашем VB.NET код.
__Radik__
Поверьте мне на полу, что фильтр здесь не важен, это не причина. Я хочу попробовать изменить код так, чтобы настройки параметров сканирования выбирались пользователем через стандартный интерфейс wia. Но только вечером я могу это сделать.
Я сделал это!
Все работает.
Сканирование в цветном режиме.
Но в этой версии программы появилось дополнительное диалоговое окно от WIA с выбором параметров сканирования.
Но вы можете сохранить эти параметры в глобальную переменную и использовать ее без диалогового окна из WIA на протяжении всей работы программы - до тех пор, пока программа не закроется.
Тем не менее я обратился с этим вопросом в службу технической поддержки Canon. И знаете, что они мне сказали?
"Ваш принтер Canon MF3228 не является сетевым". с уважением, Canon.
Что значит "сеть - не Сеть"?
Я написал им об ошибке при сканировании через vb.net
а они мне отвечают: "ваш принтер не подключен к сети"
никаких слов, только эмоции...
Karthik_Mahalingam
использовать Ответить кнопка, чтобы отправить комментарии/запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.
__Radik__
Спасибо
Karthik_Mahalingam
Добро пожаловать. Позаботьтесь о дальнейших постах