1

WIA を介してネットワーク スキャナを操作するプログラムを作成しています。1 ページだけをスキャンすると、すべてが正常に機能します。フィーダーをオンにすると:

foreach (WIA.Property deviceProperty in wia.Properties)
{
    if (deviceProperty.Name == "Document Handling Select")
    {
        int value = duplex ? 0x004 : 0x001;
        deviceProperty.set_Value(value);
    }
}

プログラムはスキャンを受信します。これは、フィーダーにまだドキュメントがあり、com エラーで落ちるという信号です (スキャナーはスキャンを続けます)。フィーダーのページをチェックするコードは次のとおりです。

//determine if there are any more pages waiting
Property documentHandlingSelect = null;
Property documentHandlingStatus = null;

foreach (Property prop in wia.Properties)
{
    if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_SELECT)
        documentHandlingSelect = prop;
    if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_STATUS)
        documentHandlingStatus = prop;
}

if ((Convert.ToUInt32(documentHandlingSelect.get_Value()) & 0x00000001) != 0)
{
    return ((Convert.ToUInt32(documentHandlingStatus.get_Value()) & 0x00000001) != 0);
}

return false;

画像コードの取得:

imgFile = (ImageFile)WiaCommonDialog.ShowTransfer(item, wiaFormatJPEG, false);

残念ながら、WIA WSD を使用した例は見つかりませんでした。おそらく、WSD を介して複数の画像を取得するための設定がいくつかあります。

4

1 に答える 1

0

Brother MFC-5895CW Multi-Function Scanner を制御するために、vba で WIA 2.0 を使用してほぼ同じ問題が発生しました。ADF からスキャンを転送したとき、画像オブジェクトに 2 つ以上の画像を取り込むことができませんでした (そして、おそらくすべての既存のオプションを試し、その問題に何日も何時間も費やしました!) そのスキャナーで見つけた唯一の解決策は、 WIA.CommonDialog-Object の ShowAcquisitionWizard メソッドを使用して、スキャンしたすべてのファイルを指定したフォルダーに一括転送します。後処理がより複雑になるため、満足のいく解決策というよりも回避策でした。

驚いたことに、クライアントのニート スキャナーで同じ手順を試してみました... ShowAcquisitionWizard は、スキャンした 1 ページのみを指定のフォルダーに配信し、他のページは消えました。「CommonDialog.ShowTransfer」メソッドで 2 番目に驚いたことに、スキャンしたすべてのドキュメントを画像ごとにアプリケーションの画像オブジェクトに転送することができました。

于 2012-02-25T20:18:21.363 に答える