4

自動的に写真を撮って 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 を含むイベントを受け取ります。これを試してみましたが、イベントは発生しません。

4

1 に答える 1

0

私の経験では、WIA には多くの奇妙な点があります。Windows 7 で開発nullItem item = device.ExecuteCommand(CommandID.wiaCommandTakePicture);ていますが、私のマシンは 32 ビットです。

私のマシンでの解決策は、元の質問で述べたようにイベントをリッスンすることです。それが機能しない場合は、ワイルドカード デバイス ID を使用してイベントに登録してみてください。

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

また、デバイスコマンドごとにイベントを再登録する必要があることもわかりました。そうしないと、トリガーが停止します。

于 2011-01-30T11:08:51.370 に答える