Automatize o recurso de digitalização do Windows

3

Eu tenho um scanner Canon Canon Pixma MP 110. Naturalmente, a Canon não fornece nenhum driver útil (seu site é realmente desesperado, frustrante e inútil em todos os sentidos) - o único software que encontrei é uma versão chinesa com pergunta marcas em todos os lugares.

No entanto, se eu acessar Dispositivos e impressoras no Windows e clique com o botão direito do mouse no scanner, posso usar o gerenciador de digitalização integrado ao Windows que está no meu idioma nativo. Ele tem recursos um pouco limitados, mas ainda é melhor do que um monte de botões cheios de pontos de interrogação.

Eu procurei um pouco e descobri que o recurso de que falo é chamado WIA .

Aqui está a abordagem, no entanto em checo, que pode soar para você como estes pontos de interrogação soam para mim.

DepoisdeescolherIniciardigitalização,apareceumacaixadediálogo.Eleéexecutadoemexplorer.exe,portanto,nãohámudançaparadescobrirqualprogramaelerealmenteé.

O que eu quero é criar um atalho na área de trabalho, que inicie automaticamente a verificação , sem que eu clique em " Iniciar verificação " e " Digitalizar ".

Além disso, o scanner tem um botão para iniciar a digitalização e meu computador reconhece quando é pressionado. Quando eu pressiono, o Windows me pergunta qual aplicativo deve ser executado para o botão - no entanto, nenhum software de scanner funcionou aqui, nem apareceu na seleção que o Windows me oferece. Eu queria saber se eu poderia hackear isso para executar qualquer aplicativo para esse botão . (Isso seria útil se eu tivesse resposta para a questão principal).

Então as perguntas mais uma vez, se você estivesse com preguiça de ler esse longo post:

  1. Como faço o Windows iniciar automaticamente a varredura a partir do scanner instalado usando o script em lote ou um comando simples no arquivo .lnk ?
  2. (opcional) Como atribuo qualquer aplicativo ao pressionamento de botão do meu scanner?
por Tomáš Zato 04.12.2013 / 22:01

3 respostas

1

Solução do PowerShell

O script deve funcionar com a maioria dos scanners, seja Canon, Epson ou qualquer outro, desde que sejam compatíveis com o WIA e suportem o comando transfer() . O script começará a digitalizar imediatamente. Todas as opções, como nome do arquivo, caminho ou formato de imagem, já estão definidas via script. Você só precisa iniciar o processo de digitalização com um atalho

  1. Salve como, por exemplo, D:\StartScan.ps1
  2. Crie um novo atalho e aponte para

    %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

Personalizações

  • Altere Item("FormatID").Value = $wiaFormatJPEG para $wiaFormatPNG (ou TIFF, BMP, GIF) se você precisar de outro formato de imagem
  • Altere $([Environment]::GetFolderPath("Desktop"))\Scan {0}.jpg" se você precisar de outro caminho de saída. Altere a extensão .jpg se você alterou anteriormente o formato da imagem

Recursos usados

por 07.06.2015 / 10:35
0

Isso pode ser melhor servido no stackoverflow. procure a tag "WIA" e há pessoas que lidaram com automação. Nível de usuário especialista.

É trivialmente fácil fazer um vbscript para iniciar a caixa de diálogo, mas (até onde eu sei com meu conhecimento limitado) (a) o WIA requer que um host manipule a imagem digitalizada, então qualquer coisa que você precisa receber e armazene a imagem (não apenas abra o diálogo) e; (b) A caixa de diálogo WIA não parece ter um modo "autônomo".

Um recurso para você: WIA Automation

E um script vbs para iniciar o wia (crie um arquivo de texto chamado, por exemplo, launchWia.vbs ):

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

Pode ser executado usando um arquivo em lotes:

cscript launchWia.vbs
pause

Que pode ser executado por meio de um atalho.

Mais uma vez, isto provavelmente não lhe dará nada, porque não manipula a imagem. Veja os documentos do MSDN para exemplos que lidam com manipulação de imagens.

    
por 04.12.2013 / 23:48
0

O programa é o Fax e Scanner do Windows.

QuandovocêclicaemNovavarredura,ajanelapostadaéexibida:

    
por 22.02.2014 / 05:21