私はかなり古い Canon のスキャナー Pixma MP 110 を持っています。もちろん、Canon は役に立つドライバーを提供していません (彼らのサイトは本当に必死で、イライラさせられ、あらゆる点で役に立たない)。私が見つけた唯一のソフトウェアは、疑問符が至る所にある中国語版です。
しかし、私がデバイスとプリンターWindows のマネージャーでスキャナーを右クリックすると、母国語の Windows 統合スキャン マネージャーを使用できます。機能は多少制限されていますが、疑問符でいっぱいのボタンの集まりよりはましです。
少し調べてみたところ、私が話している機能はウィア。
ただし、チェコ語でのアプローチは、私にとっての疑問符のように聞こえるかもしれません。
選択後スキャンを開始ダイアログが表示されます。 の下で実行されるexplorer.exe
ため、実際にどのプログラムであるかを確認しても変わりはありません。
私が欲しいのはデスクトップショートカットを作ることです。自動的にスキャンを開始する「スキャンを開始" そして "スキャン「」。
また、スキャナにはスキャンを開始するためのボタンがあり、コンピュータはそれが押されると認識します。それを押すと、Windowsはボタンに対してどのアプリケーションを実行するか尋ねますが、ここではスキャナソフトウェアは機能せず、Windowsが提供する選択肢にも表示されませんでした。これをハックして実行できるかどうか疑問に思っています。そのボタンのアプリケーション(主要な質問に対する答えが得られれば役立つでしょう)。
それで、もしあなたがその長い投稿を読むのが面倒だというのなら、もう一度質問します。
- バッチ スクリプトまたはファイル内の簡単なコマンドを使用して、インストールされたスキャナーからのスキャンを Windows で自動的に開始するにはどうすればよいですか
.lnk
? - (オプション) スキャナーのボタン押下にアプリケーションを割り当てるにはどうすればよいですか?
答え1
PowerShell ソリューション
このスクリプトは、Canon、Epson など、WIA 互換でtransfer()
コマンドをサポートしているほとんどのスキャナで動作します。スクリプトはすぐにスキャンを開始します。ファイル名、パス、画像形式などのすべてのオプションは、スクリプトによって既に設定されています。ショートカットを使用してスキャン処理を開始するだけです。
- 保存例:
D:\StartScan.ps1
新しいショートカットを作成し、
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -File "D:\StartScan.ps1"
スキャン開始.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
カスタマイズ
- 別の画像形式が必要な場合は、(またはTIFF、BMP、GIF)
Item("FormatID").Value = $wiaFormatJPEG
に変更します。$wiaFormatPNG
- 別の出力パスが必要な場合は変更してください。以前に画像形式を変更したことがある場合は
$([Environment]::GetFolderPath("Desktop"))\Scan {0}.jpg"
拡張子を変更してください。.jpg
使用されたリソース
- http://www.da5is.com/2013/09/08/quick-powershell-to-scan-to-evernote/
- http://msdn.microsoft.com/en-us/library/ms630814(v=vs.85).aspx
- http://ardalis.com/powershell-control-over-nikon-d3000-camera
- http://msdn.microsoft.com/en-us/library/windows/desktop/ms630806(v=vs.85).aspx
- http://deletethis.net/dave/?uri=http%3A%2F%2Fcerealnumber.livejournal.com%2F47638.html
- 参考:
- https://stackoverflow.com/a/28422467/935614
- https://msdn.microsoft.com/en-us/library/ms630819(v=vs.85).aspx#フィルター共有サンプル016
答え2
これは私が使用している PS スクリプトです。このスレッドの回答の 1 つからコピーし、別のフィーダーで動作するように変更しました。ガラス フィーダーを使用していない場合は、「prop value」を 0 1 2 に変更してフィーダーを変更できます。このスクリプトはスキャン後に画像を表示せず、保存するだけです。
# Create object to access the scanner
$deviceManager = new-object -ComObject WIA.DeviceManager
$device = $deviceManager.DeviceInfos.Item(1).Connect()
# Set the scanner source to the feeder
foreach ($prop in $device.Properties) {
if ($prop.Name -eq "Document Handling Select") {
$prop.Value = 1
}
}
# Create object to access the scanned image later
$imageProcess = new-object -ComObject WIA.ImageProcess
# Store file format GUID strings
$wiaFormatJPEG = "{B96B3CAE-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 C:\scan path and filename 'Scan 0'
$filename = "C:\scan\Scan {0}.pdf"
# 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:\scan\Scan {x}'
$image.SaveFile($filename)
答え3
これは、stackoverflow でより適切に提供される可能性があります。「WIA」タグを検索すると、自動化に取り組んでいる人々が見つかります。エキスパート ユーザー レベル。
ダイアログを起動する VBScript を作成するのは非常に簡単ですが、(私の限られた知識では) (a) WIA ではスキャンされたイメージを処理するためにホストが必要なので、何をするにしてもイメージを受信して保存する必要があり (単にダイアログを起動するだけでなく)、(b) WIA ダイアログには「無人」モードがないようです。
あなたのためのリソース:WIA オートメーション
そして、wia を起動する vbs スクリプト (eg という名前のテキスト ファイルを作成しますlaunchWia.vbs
):
set oDlg = CreateObject("WIA.CommonDialog")
oDlg.ShowAcquireImage()
バッチファイルを使用して実行できます:
cscript launchWia.vbs
pause
ショートカットで実行できます。
繰り返しますが、これは画像を処理しないので、おそらく何も得られないでしょう。画像処理を扱うサンプルについては、MSDN ドキュメントを参照してください。
答え4
スキャン.vbs
Set CommonDialog = CreateObject("WIA.CommonDialog")
Set DeviceManager = CreateObject("WIA.DeviceManager")
' List all Available Devices by Name and DeviceID
' The following example shows how to list all available Deviceices by name and DeviceID.
Dim i, n 'As Integer
n = DeviceManager.DeviceInfos.Count
WScript.Echo "Number of Deviceice found = " & n
For i = 1 to DeviceManager.DeviceInfos.Count
WScript.Echo " Device " & i & ":" & vbTab & DeviceManager.DeviceInfos(i).Properties("Name").Value & vbTab & "(" & DeviceManager.DeviceInfos(i).DeviceID & ")"
Next
Set DevInfo = DeviceManager.DeviceInfos(1)
Set Device = DevInfo.Connect
Device.Items(1).Properties("6146").Value = 2 'colors
Device.Items(1).Properties("6147").Value = 600 'dots per inch/horizontal
Device.Items(1).Properties("6148").Value = 600 'dots per inch/vertical
Device.Items(1).Properties("6149").Value = 0 'x point where to start scan
Device.Items(1).Properties("6150").Value = 0 'y point where to start scan
Device.Items(1).Properties("6151").Value = 5100 'horizontal exent DPI x inches wide
Device.Items(1).Properties("6152").Value = 7002 'vertical extent DPI x inches tall
Device.Items(1).Properties("4104").Value = 8 'bits per pixel
'Device.Items(1).Properties("3098").Value = 1700 'page width
'Device.Items(1).Properties("3099").Value = 2196 'page height
Set img = CommonDialog.ShowTransfer(Device.Items(1), "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}", true)
img.SaveFile "F:/image.bmp"
走る"C:/Windows/System32/cscript.exe" //X "F:/scan.vbs"