有一个我用来远程控制数码相机的旧程序,以便自动拍照并将它们传输到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的事件。试过这个,没有事件被提出。
答案 0 :(得分:0)
根据我的经验,WIA有很多怪异。我也在努力使用null
返回的Item item = device.ExecuteCommand(CommandID.wiaCommandTakePicture);
,虽然我在Windows 7中开发,但我的机器是32位的。
我的机器上的解决方案正在监听原始问题中提到的事件。如果这不起作用,请尝试使用通配符设备ID注册该事件:
manager.RegisterEvent(EventID.wiaEventItemCreated, Miscellaneous.wiaAnyDeviceID);
device.ExecuteCommand(CommandID.wiaCommandTakePicture);
我还发现我需要在每个设备命令后重新注册事件,否则它将停止触发。