3

У меня довольно старый сканер Canon Pixma MP 110. Конечно, Canon не предоставляет никаких полезных драйверов (их сайт действительно отчаянный, разочаровывающий и бесполезный во всех отношениях) - единственное обнаруженное мной программное обеспечение - это китайская версия с вопросительными знаками повсюду.

Однако, если я зайду в Диспетчер устройств и принтеров в Windows и щелкну правой кнопкой мыши на сканере, я могу использовать встроенный в Windows диспетчер сканирования на моем родном языке. Он имеет несколько ограниченные возможности, но все же лучше, чем набор кнопок с вопросительными знаками.

Я немного искал и обнаружил, что функция, о которой я говорю, называется WIA.

Вот подход, однако на чешском языке, который может звучать для вас так, как будто эти вопросительные знаки звучат для меня.

После выбора Начать сканирование появится диалоговое окно. Он работает под explorer.exe , так что нет никаких изменений, выясняя, что это за программа.

Я хочу сделать ярлык на рабочем столе, который бы автоматически запускал сканирование, не нажимая кнопки « Начать сканирование » и « Сканировать ».

Кроме того, на сканере есть кнопка для запуска сканирования, и мой компьютер распознает, когда она нажата. Когда я нажимаю ее, Windows спрашивает меня, какое приложение должно быть запущено для кнопки - однако здесь не работало программное обеспечение сканера и не появлялось ничего из того, что дает мне Windows. Мне было интересно, смогу ли я взломать это, чтобы запустить любое приложение для этой кнопки. (это было бы полезно, если бы я когда-нибудь получил ответ на основной вопрос).

Итак, вопросы еще раз, если вам было лень читать этот длинный пост:

  1. Как заставить Windows автоматически запускать сканирование с установленного сканера, используя пакетный скрипт или простую команду в файле .lnk ?
  2. (необязательно) Как назначить какое-либо приложение нажатию кнопки на моем сканере?

3 ответа3

1

Решение PowerShell

Скрипт должен работать с большинством сканеров, независимо от того, является ли он Canon, Epson или чем-то еще, если они совместимы с WIA и поддерживают команду transfer() . Скрипт начнет сканирование немедленно. Все параметры, такие как имя файла, путь или формат изображения, уже установлены с помощью скрипта. Вам просто нужно запустить процесс сканирования с помощью ярлыка

  1. Сохраните его как, например, D:\StartScan.ps1
  2. Создайте новый ярлык и укажите его

    %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -File "D:\StartScan.ps1"
    

StartScan.ps1

# Create object to access the scanner
$deviceManager = new-object -ComObject WIA.DeviceManager
$device = $deviceManager.DeviceInfos.Item(1).Connect()

# Create object to access the scanned image later
$imageProcess = new-object -ComObject WIA.ImageProcess

# Store file format GUID strings
$wiaFormatBMP  = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}"
$wiaFormatPNG  = "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}"
$wiaFormatGIF  = "{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}"
$wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
$wiaFormatTIFF = "{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}"

# Scan the image from scanner as BMP
foreach ($item in $device.Items) {
    $image = $item.Transfer() 
}

# set type to JPEG and quality/compression level
$imageProcess.Filters.Add($imageProcess.FilterInfos.Item("Convert").FilterID)
$imageProcess.Filters.Item(1).Properties.Item("FormatID").Value = $wiaFormatJPEG
$imageProcess.Filters.Item(1).Properties.Item("Quality").Value = 5
$image = $imageProcess.Apply($image)

# Build filepath from desktop path and filename 'Scan 0'
$filename = "$([Environment]::GetFolderPath("Desktop"))\Scan {0}.jpg"

# If a file named 'Scan 0' already exists, increment the index as long as needed
$index = 0
while (test-path ($filename -f $index)) {[void](++$index)}
$filename = $filename -f $index

# Save image to 'C:\Users\<username>\Desktop\Scan {x}'
$image.SaveFile($filename)

# Show image 
& $filename

Адаптации

  • Изменить Item("FormatID").Value = $wiaFormatJPEG до $wiaFormatPNG (или TIFF, BMP, GIF), если вам нужен другой формат изображения
  • Измените $([Environment]::GetFolderPath("Desktop"))\Scan {0}.jpg" если вам нужен другой выходной путь. Измените расширение .jpg если вы ранее изменили формат изображения

Использованные ресурсы

0

Программа Windows Fax and Scan.

Когда вы нажимаете «Новое сканирование», появляется окно, которое вы разместили:

0

Это может быть лучше подано в stackoverflow. поиск по тегу "WIA" и есть люди, которые взялись за автоматизацию. Опытный пользовательский уровень.

Сделать VBScript для запуска диалога довольно просто, но (насколько я знаю из моих ограниченных знаний) (a) WIA требует хост для обработки отсканированного изображения, поэтому все, что вы делаете, должно будет получать и хранить изображение (не просто запустить диалог) и; (b) Диалог WIA, по-видимому, не имеет режима "без присмотра".

Ресурс для вас: WIA Automation

И скрипт vbs для запуска wia (создайте текстовый файл с именем, например, launchWia.vbs):

set oDlg = CreateObject("WIA.CommonDialog")
oDlg.ShowAcquireImage()

Может быть запущен с использованием командного файла:

cscript launchWia.vbs
pause

Который может быть запущен через ярлык.

Опять же, это, вероятно, не даст вам ничего, потому что это не обрабатывает изображение. Посмотрите документы MSDN для примеров, которые имеют дело с обработкой изображений.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .