既存の業務システム&ワークフローに電子文書化ソリューションを組み込める「CapturePerfect SDK」プログラミング編(4/5 ページ)

» 2006年05月17日 00時00分 公開
[本田雅一,ITmedia]
PR

 一方、ユーザーがインタラクティブにスキャン条件を変更したり、処理の流れに応じてパラメータを自動的に判別して切り替えるようなプログラミングを行う際には、SetParam系のAPIを呼び出す。OCR処理の有無やバーコード読み取りの指定、OCR処理の範囲などもここで指定する。これらのAPIは、APIへの引数で設定をサイレントに変更できるほか、CapturePerfect 3.0でも登場するさまざまな設定ダイアログを表示させ、ユーザーにパラメータを選択させることもできる。

 引数による設定の変更には3種類が用意されており、設定するパラメータの型によってAPIを使い分ける。引数には変更するパラメータを示すタグと設定する値の2つを利用する。パラメータのタグに関しては、ドキュメントのリファレンス以外にもCappeAPI.bas内の定数定義を参照しておくといい。各タグには詳細なコメントが振られている。

 同様に、3種類が用意されているGetParam系のAPIを用いれば、タグを引数とすることで各設定値の現在値を知ることが可能だ。

 一方、ユーザーインタフェースを用いる場合はUI制御のAPIを呼び出す。このAPIは引数によって4種類のダイアログを切り替えることができる。それぞれCapturePerfect 3.0の「スキャンバッチファイル設定」、「バーコード/OCRログ設定」、「容量警告設定」、「OCR設定」に対応するものだ。

スキャンの実行


 サンプルプログラム中、実際のスキャンは、メインフォームのジェネラルパートに書かれている関数によって行われている。

Private Function Scan(ScanMode As ScanningMode) As Long
    If ScanMode <> modeScanPage Then
        Dim FileIndex As Long
        ********** CPAPI_TAG_FFINDEX, FileIndex, 0
        If frmLoadScanParam.ShowScanParamSetting( _
            g_Overwrite, _
            g_ScanContinue, _
            g_ShowDriverDialog, _
            g_StartPage, _
            g_Profile, _
            g_UserPassword, _
            g_OwnerPassword, _
            g_AuthorityFlags, _
            FileIndex, _
            ScanMode <> modeScanFile _
        ) <> vbOK Then
            Scan = CPAPI_ERROR_CANCEL
            Exit Function
        End If
    End If
    
    Dim rtn As Long
    rtn = LoadDriver()
    If rtn <> CPAPI_ERROR_SUCCESS Then
        Scan = rtn
        Exit Function
    End If
    g_Prescanning = False
    g_Scanning = False
    g_Cancel = False
    Select Case ScanMode
    Case modeScanPage
        rtn = ShowErrorMessage(CPAPIScanPage())
    Case modeScanFile
        rtn = ShowErrorMessage(CPAPIScanBatch())
    Case modeScanAppend
        rtn = ShowErrorMessage(CPAPIScanAppend())
    Case modeScanInsert
        rtn = ShowErrorMessage(CPAPIScanInsert())
    Case modeScanReplace
        rtn = ShowErrorMessage(CPAPIScanReplace())
    End Select
    If rtn = CPAPI_ERROR_SUCCESS Then
        g_Prescanning = True
    End If
    Scan = rtn
End Function
※上記の**********部分にはGetParam系のAPI関数が入ります。

 PDF作成、TIFF作成など、どのファイルを作成するかは、前述のようにあらかじめprofileやSetParam APIなどで指定してあるため、プログラマーは作成ファイルの違いをこの時点で意識する必要はない。1ページ、全ページのスキャンを行うか、追加モード、挿入モード、置き換えモードなど、スキャン結果をどのようにファイルに反映させるかでモードを選び、各APIを呼び出すだけでいい。

スキャンイメージの取得


 上記のようにスキャン指示をAPIに対して行っても、実際に画面上にスキャンしたイメージが表示されるわけではないが、パラメータに格納用バッファのアドレスポインタを入れておくことで、自動的にイメージデータ(wParam)とデータの長さ(lParam)が設定される。

Copyright © ITmedia, Inc. All Rights Reserved.


提供:キヤノンマーケティングジャパン 株式会社
制作:ITmedia +D 編集部/掲載内容有効期限:2006年6月19日