views:

398

answers:

2

I'm trying to use WIA (Microsoft Windows Image Acquisition Library v2.0) to build a C# 3.5 WinForms app in VS2008 running on a Vista rig to aquire images from a scanner.

I know there are plenty of SDKs out there that do this (Accusoft, ByteScout, Knowledge Lake, etc) but we wanted some control over the UI (or lack of) and the ability to customize the processing and handling of the images, which is why we're trying the WIA angle.

However, I have been unable to get WIA to 'see' my scanner.

The 'Microsoft Windows Image Acquisition Library v2.0' dll has been referenced in the VS project and I have included 'using WIA;' at the top of the page.

Here is the section of code:

//Choose Scanner
        CommonDialogClass class1 = new CommonDialogClass();
        Device d = class1.ShowSelectDevice(WiaDeviceType.UnspecifiedDeviceType, true, false);
        if (d != null)
        {
            this.DeviceID = d.DeviceID;
        }
        else
        {
            //no scanner chosen
            return;
        }

Complies fine but line 2 (Device d = ...) kicks the following error when run:
Exception from HRESULT: 0x80210015

From what I can tell, this usually means your device is unplugged/not turned on or the device is not WIA compatible.
But the scanner in question shows up in Control Panel/Scanners and Cameras (means it's WIA compatible) and works when accessed via Photoshop (means it's turned on).

I have plugged in other devices (Digital SLR) and the above code can 'see' them, so the code is working.

Does anyone have any suggestions as to what is going wrong and how to fix it?

Update 1:
I have tried a couple of different scanners (Canon 5000F, Benq 5250C), but same problem.

Update 2:
I have been unable to find definitive proof of this, but I'm thinking that the scanners I have been testing with, or maybe most scanners :( , are not WIA compatible/supported. I'm am now looking into using TWAIN, but would still love to hear of anyone who has had some success with WIA.

A: 

Have a look at this article on CodeProject that covers TWAIN. This might help you in that direction, also, here is another article about WIA, despite it is a bit old but worth a look nonetheless.

tommieb75
Hi Tommie, I had seen both of those pages during my research on this (and played with the code from them). However, the Twain article is from 2001 and even mentions WIA as a more modern approach. And the WIA article is for WIA 1.0 which is for XP only, I'm using the WIA 2.0 which is for Vista/Win7. But thanks anyway.
David HAust
A: 

I would try the following code when connected only your scanner

IDeviceManager dm = ClassFactory.createDeviceManager();
System.out.println(dm.deviceInfos().count());

if the device manager can see your scanner at all

Zavael