私はかなり古いCanonスキャナーPixma MP 110を持っています。もちろん、Canonは便利なドライバーを提供していません(彼らのサイトは本当に絶望的で、イライラし、まったく役に立たないです)-私が見つけた唯一のソフトウェアどこにでも疑問符が付いた中国語版です。
ただし、Windowsで デバイスとプリンター マネージャーに移動し、スキャナーを右クリックすると、母国語のWindows統合スキャンマネージャーを使用できます。機能は多少制限されていますが、疑問符でいっぱいのボタンの束よりも優れています。
少し調べてみると、私が話している機能は [〜#〜] wia [〜#〜] と呼ばれていることがわかりました。
これがアプローチですが、チェコ語では、これらの疑問符が私に聞こえるように聞こえるかもしれません。
スキャン開始を選択するとダイアログが表示されます。 Explorer.exe
で実行されるため、実際のプログラムを確認するのに変更はありません。
私が欲しいのは、デスクトップショートカットを作成することです。これにより、「スキャンの開始」をクリックせずに自動的にスキャンを開始します。 "スキャン"。
また、スキャナーにはスキャンを開始するボタンがあり、コンピューターはそれが押されたことを認識します。それを押すと、Windowsはボタンに対してどのアプリケーションを実行する必要があるかを尋ねてきますが、ここではスキャナーソフトウェアは機能せず、Windowsが選択したものにも何も表示されませんでした。これをハックしてそのボタンの任意のアプリケーションを実行できるかどうか疑問に思いました。 (これは、最初の質問に対する回答が得られた場合に役立ちます)。
それで、あなたがその長い投稿を読むのが面倒だった場合、もう一度質問します:
.lnk
ファイルの簡単なコマンドを使用して、インストールされているスキャナーからWindowsにスキャンを自動的に開始させるにはどうすればよいですか?スクリプトは、Canon、Epson、またはWIA互換であり、transfer()
コマンドをサポートしている限り、ほとんどのスキャナーで機能するはずです。スクリプトはすぐにスキャンを開始します。ファイル名、パス、画像形式などのすべてのオプションは、スクリプトを介してすでに設定されています。ショートカットを使用してスキャンプロセスを開始する必要があります
D:\StartScan.ps1
_新しいショートカットを作成し、それをポイントします
_%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -File "D:\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
_を変更しますプログラムはWindowsファックスとスキャンです。
[新規スキャン]をクリックすると、投稿したウィンドウが表示されます。
これは、stackoverflowでより適切に提供される可能性があります。タグ「WIA」を検索すると、自動化に取り組んだ人がいます。エキスパートユーザーレベル。
ダイアログを起動するためのvbscriptを作成するのは簡単ですが、(私の限られた知識で知る限り)(a)WIAはスキャンされた画像を処理するためにホストを必要とするため、画像を受信して保存する必要があります(単にダイアログを起動するだけではありません)そして; (b)WIAダイアログに「無人」モードが表示されない。
あなたのためのリソース: WIA Automation
そして、wiaを起動するvbsスクリプト(例:launchWia.vbs
という名前のテキストファイルを作成します):
set oDlg = CreateObject("WIA.CommonDialog")
oDlg.ShowAcquireImage()
バッチファイルを使用して実行できます。
cscript launchWia.vbs
pause
これはショートカットを介して実行できます。
繰り返しますが、これは画像を処理しないため、おそらく何も得られません。画像処理を扱うサンプルについては、MSDNドキュメントを参照してください。
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"