スキャナーのボタンが押されたときに自動スキャンを実装します。 結果のマテリアルはネットワークフォルダーに移動し、一意の名前を持つ必要があります。 スキャナーは稼働中のマシンに接続されています。すべてのスキャン手順は、Windowsを実行しているこのコンピューターで作業している人の注意をそらすものではありません。
Linuxでは、このタスクは数行のコードとすばらしいSaneユーティリティで実行されます。 Cウィンドウははるかに複雑です。 UMAX Astra 4700スキャナーの標準ソフトウェアでは、そのようなことはできませんでした。 インターネットでの検索では結果が得られませんでしたが、コマンドラインからスキャンできる単純なユーティリティ、たとえばiCopy 、 IrfanViewがありました 。 残念ながら、それらのどれもスキャナーボタンを押すためのハンドラーとして静かに登録できず、静かに目的のフォルダーをスキャンできませんでした。 スキャナーからアプリケーションをイベントハンドラーとして登録する方法の説明に出会ったので、特に.NET Framework内のJscriptコンパイラーを使用して、作成したスクリプトを実行可能ファイルにコンパイルできるため、JavaScriptで小さなプログラムを作成することにしました。 コンソールスキャナーとして、少しバグの多いiCopyが選択されましたが、これはコマンドラインから一部のキーを認識しませんが、松葉杖によって解決されます。
.NET Frameworkをインストールし、jsc.exeアプリケーションを見つけてコマンドプロンプトで実行する場合、スクリプトのコンパイルは可能な限り簡単です。
jsc.exe /target:winexe scan.js
コンパイルされたscan.exeアプリケーションを取得します。 「-reg」キーはシステムにプログラムを登録します。スキャナーボタンからのメッセージハンドラとして、「-unreg」キーはすべてを返します。 システムに登録した後、Windowsを再起動する必要があります。 プログラムには、ボタンクリックハンドラから受信したメッセージを目的のアプリケーションと比較できる構成ファイルがあります。 セットアップを簡単にするために、レジストリ全体でイベント識別子を検索しないようにログモードがあります。 スキャナーのボタンをクリックした後、アプリケーションを選択し、ログを見て、ボタンクリックイベントの2番目のパラメーターIDを確認し、構成ファイルに書き込みます。
使用法:
scan.exe -reg //レジストリにプログラムを登録します
scan.exe -unreg //レジストリからプログラム情報を削除します
scan.exe param1 param2 // param2に従ってアプリケーションを起動します
構成ファイル(スキャナー用):
ソースコード
- [デバッグ]
- debugflag = true
- logfile = debug.log
- [フラグ]
- mail_flag = / StiEvent:{F61F8581-6105-11D6-AAF8-0050BA1ACA6F};
- scan_flag = / StiEvent:{F61F8582-6105-11D6-AAF8-0050BA1ACA6F};
- print_flag = / StiEvent:{F61F8583-6105-11D6-AAF8-0050BA1ACA6F};
- [アプリケーション]
- mail_app =
- scan_app = "C:\ Program Files \ iCopy \ iCopy.exe" /f:"\\server\scanned$date$.jpg "/ r:150
- print_app = "C:\ Program Files \ iCopy \ iCopy.exe" / c
TODO:
- アプリケーションの起動時にアクティブウィンドウのフォーカスが失われないようにします。
解決済み:実行方法パラメーターは6でなければなりません - 点滅しているコンソールウィンドウを取り除きます。 誰がどうやって知っているのか教えてください。
解決済み:jsc.exe /ターゲット:winexe scan.js - 問題に直面して、一部のマシンでボタンを処理するアプリケーションを選択した後、「デフォルトでこのアプリケーションを使用」を選択すると、ボタンをもう一度押しても何も起こらず、アプリケーションが起動せず、プリンターのプロパティに移動して「選択」ボタンを設定する必要がありますアプリケーション。」
解決済み:Windows XPサービスのスタートアップステータスを標準に戻すのに役立ちました。 Windows Imaging Acquisitionサービスは、手動ではなく自動的に開始することが重要です。