2011-01-28 2 views
4

사진을 자동으로 찍어 PC로 전송하기 위해 디지털 카메라를 원격으로 제어하는 ​​데 사용한 이전 프로그램이 있습니다. 프로그램은 WIA를 기반으로하며, 기억하는 한 Windows XP에서 원래 설계되고 사용되었습니다.WIA : device.ExecuteCommand (CommandID.wiaCommandTakePicture); null을 반환합니다.

최근에 압축 파일을 가져와 동일한 카메라를 사용하여 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

해결 방법을 찾을 수 없으므로 Windows 7 용 XP Mode를 설치하고 VM에서 프로그램을 실행하도록 선택합니다. – Thingfish

+0

안녕하세요, Device Manger 대화 상자를 호출하는 코드 예제가 있습니다.이 WIA.CommonDialog dlg = new WIA.CommonDialog();와 같은 것을 사용하고 있습니다. 이것은 XP에서는 작동하지 않지만 Win 7에서는 정상적으로 작동합니다. 사진을 찍어서 XP 시스템의 디스크에 저장해야합니다. – franklins

답변

0

내 경험에 비추어 볼 때, 은 많은 oddities입니다. 나는 또한 null으로 고민하여 Item item = device.ExecuteCommand(CommandID.wiaCommandTakePicture);으로 돌아 왔고 Windows 7에서 개발 중이지만 컴퓨터는 32 비트입니다.

내 컴퓨터의 솔루션이 원래 질문에서 언급 한 이벤트를 수신합니다. 그것이 작동하지 않는 경우, 와일드 카드 장치 ID를 사용하여 이벤트에 등록하려고 :

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

나는 또한 내가 각 장치에 명령 한 후 이벤트를 다시 등록하기 위해 필요한 것을 발견, 그렇지 않으면 게재가 중단됩니다.

관련 문제