4

WIA 2.0ライブラリを使用するためにC#でアプリケーションを開発しています。現時点では、ADF(自動ドキュメントフィーダー)、フィルターなど、ほとんどの機能を使用できました。

次に、スキャナーのデュプレクサ(富士通)を使用する必要があります。

WIA_DPS_DOCUMENT_HANDLING_SELECTスキャナープロパティをDUPLEX値に設定しようとしています。以下のコードを参照してください。

  try
        {
            bool hasMorePages = false;
            //determine if there are any more pages waiting
            Property documentHandlingSelect = null;
            Property documentHandlingStatus = null;
            foreach (Property prop in WiaDev.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;
            }

            object obj = new object();
            obj = (WIA_DPS_DOCUMENT_HANDLING_SELECT.DUPLEX);
            documentHandlingSelect.set_Value(ref obj);

            if (documentHandlingSelect != null) //may not exist on flatbed scanner but required for feeder
            {
                //check for document feeder
                if ((Convert.ToUInt32(documentHandlingSelect.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_SELECT.FEEDER) != 0)
                {
                    hasMorePages = ((Convert.ToUInt32(documentHandlingStatus.get_Value()) & WIA_DPS_DOCUMENT_HANDLING_STATUS.FEED_READY) != 0);
                    if (hasMorePages)
                    {
                        // set the property to use FEEDER and DUPLEX (this result in the value of 5 in the property)
                        object obj = new object();
                        obj = (WIA_DPS_DOCUMENT_HANDLING_SELECT.FEEDER | WIA_DPS_DOCUMENT_HANDLING_SELECT.DUPLEX);
                        documentHandlingSelect.set_Value(ref obj);
                    }
                }
            }
            return hasMorePages;

このコードは正常にコンパイルされますが、この行を実行すると2つの画像を取得できません。フロントのみを取得します。

imgFile = (ImageFile)wiaCommonDialog.ShowTransfer(item, format.Guid.ToString("B")/* wiaFormatJPEG*/, false);

スキャナーのアイテムからChildrenオブジェクトを取得できることを多くのトピックとドキュメントで読みましたが、このコレクションにはアイテムが1つしかありません。

誰か助けてください!

ありがとう

4

1 に答える 1

4

最初の画像を転送すると、同じ参照を使用して2番目の画像が利用可能になるため、コードの最初の行を2回呼び出すだけです。少し奇妙に思えますが、私の両面スキャナーの 1 つで動作します。

例えば

imgFile = (ImageFile)wiaCommonDialog.ShowTransfer(item, format.Guid.ToString("B")/* wiaFormatJPEG*/, false);
imgFile2 = (ImageFile)wiaCommonDialog.ShowTransfer(item, format.Guid.ToString("B")/* wiaFormatJPEG*/, false);

これはあなたのために働くかもしれません。両面スキャンにも問題がありますが、スキャナーの 1 つでこれを機能させることができました。

于 2011-09-28T08:57:01.007 に答える