WIA:device.ExecuteCommand(CommandID.wiaCommandTakePicture);返回null

时间:2011-01-28 01:24:53

标签: c# windows-7 wia

有一个我用来远程控制数码相机的旧程序,以便自动拍照并将它们传输到PC。程序基于WIA,据我所知,它最初是在Windows XP上设计和使用的。

最近把它从档案中删除了,并且一直试图使用相同的相机在64位Windows 7上运行它。找到相机,并触发捕获工作没有问题。但是在执行此行时:

//device of type WIA.Device
Item item = device.ExecuteCommand(CommandID.wiaCommandTakePicture);
返回

null,让我没有要传输的图像引用。一直在寻找解决方案的高低,但一直无法想出任何东西。找到另一个QA网站,答案建议使用:

//manager of type WIA.DeviceManager, device of type WIA.Device
manager.RegisterEvent(EventID.wiaEventItemCreated, device.DeviceID);
manager.OnEvent += new _IDeviceManagerEvents_OnEventEventHandler(manager_OnEvent);

在图像捕获后,人们会收到包含itemID的事件。试过这个,没有事件被提出。

1 个答案:

答案 0 :(得分:0)

根据我的经验,WIA有很多怪异。我也在努力使用null返回的Item item = device.ExecuteCommand(CommandID.wiaCommandTakePicture);,虽然我在Windows 7中开发,但我的机器是32位的。

我的机器上的解决方案正在监听原始问题中提到的事件。如果这不起作用,请尝试使用通配符设备ID注册该事件:

manager.RegisterEvent(EventID.wiaEventItemCreated, Miscellaneous.wiaAnyDeviceID);
device.ExecuteCommand(CommandID.wiaCommandTakePicture);

我还发现我需要在每个设备命令后重新注册事件,否则它将停止触发。