WIA 2 в Windows 7 Delphi

WIA 2 в Windows 7 не обнаруживает мою камеру, а WIA 1 в Windows XP ее обнаруживает.

Я пытаюсь запустить свою программу от имени администратора.

Моя камера:

Веб-камера Asus usb2.

Delphi возвращает сообщение:

(как это) недоступно ни одно устройство wia из указанного типа

or

Нарушение прав доступа по адресу ...... в модуле ......

Я использую этот код:

procedure TForm1.Button9Click(Sender: TObject);
Const
   wiaFormatBMP ='{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}';
var
   CommonDlg: ICommonDialog;
   AImage: IImageFile;
   ImagePath: String;
   DeviceManager1 :iDeviceManager;
begin
   CommonDlg := createOleObject('WIA.CommonDialog') as ICommonDialog;
   DeviceManager1 := createOleObject('WIA.DeviceManager') as  iDeviceManager;
   edit1.Text:=  inttostr( DeviceManager1.DeviceInfos.Count);
   AImage := CommonDlg.ShowAcquireImage(UnspecifiedDeviceType,UnspecifiedIntent,
                                        MaximizeQuality,wiaFormatBMP,true,False,True);
   ImagePath := 'C:\temp\test.bmp';
   AImage.SaveFile(ImagePath);
end;

person Ahmad    schedule 06.05.2012    source источник
comment
в этой строке ‹edit1.Text:= inttostr(DeviceManager1.DeviceInfos.Count); › вернуть 0   -  person Ahmad    schedule 06.05.2012
comment
и в этой строке AImage := CommonDlg.ShowAcquireImage(UnspecifiedDeviceType,UnspecifiedIntent, MaximizeQuality,wiaFormatBMP,true,False,True); ответное сообщение: нет доступных устройств wia указанного типа   -  person Ahmad    schedule 06.05.2012
comment
Вы проверили, присутствует ли ваша камера и включена ли она в Панель управления/Диспетчер устройств/Устройства обработки изображений? Я мог бы смоделировать то, что вы описали (хотя и без нарушения доступа), этого (очевидно :-) достаточно, чтобы отключить все устройства обработки изображений. Что касается AV, всегда лучше добавить хотя бы такую ​​проверку, как эта if not VarIsEmpty(Variable) then Variable.DoSomething, прежде чем вы получите доступ к переменной интерфейса с поздней привязкой (она может быть неопределенной или находиться в каком-то ошибочном состоянии).   -  person TLama    schedule 06.05.2012
comment
спасибо, TLama, это устройство присутствует и включено, win xp запускается на VMW (виртуальная машина) на том же компьютере, что и win 7, что означает, что устройство работает хорошо, в этом предложении нет переменных, только константы: CommonDlg.ShowAcquireImage(UnspecifiedDeviceType, UnspecifiedIntent , MaximizeQuality , wiaFormatBMP , true , False , True); 1-UnspecifiedDeviceType или cameraDeviceType или ScannerDeviceType 2-UnspecifiedIntent или ColorIntent или... 3-MaximizeQuality или MinimizeSize 4-wiaFormatBMP 5-true =AlwaysSelectDevice 6-false = использовать пользовательский интерфейс 7- true = отменить ошибку   -  person Ahmad    schedule 07.05.2012
comment
в Общие образцы msdn просто добавьте CommonDialog и DeviceManager из набора инструментов, но в delphi он не существует, поэтому я создаю его с помощью ** ::: CommonDlg := createOleObject('WIA.CommonDialog') as ICommonDialog;::: ** ** :::DeviceManager1 := createOleObject('WIA.DeviceManager') as iDeviceManager;:::** затем я пробую это :::CommonDlg.ShowSelectDevice(UnspecifiedDeviceType,true,true);:::: но это не работай   -  person Ahmad    schedule 07.05.2012
comment
Вы можете рассмотреть этот ответ, размещенный на SO, все еще связанный с delphi и wia.   -  person menjaraz    schedule 08.05.2012
comment
спасибо, menjaraz - но я не нахожу ничего полезного в wia2 - delphi - я вижу вопрос здесь о wia1 с win xp и delphi * и я отвечаю на этот вопрос - пожалуйста, если кто-нибудь знает о wia2 с delphi, пожалуйста, ответьте мне   -  person Ahmad    schedule 10.05.2012
comment
Извините, я не обратил особого внимания на эту важную деталь.   -  person menjaraz    schedule 10.05.2012


Ответы (1)


Недавно у меня был подобный опыт с WIA и Win7.

То, что я в конечном итоге использовал, было решением DirectX.

Основы Delphi — захват с веб-камеры DirectX

Я не помню, как я изначально нашел этот проект, но под Win7 он просто работает даже со старыми веб-камерами, которые я нашел валяющимися в офисе.

Я рекомендую вам посмотреть Demo3 в загружаемом файле, так как это был лучший, простой пример того, что мне нужно. YMMV.

(Редактировать) Моя проблема с WIA связана с тем, что производитель веб-камеры не поддерживает WIA или Twain под Win7.

person Vivian Mills    schedule 14.06.2012
comment
Это не отвечает на заданный вопрос, почему WIA 2 на Win 7 не работал, а тот же код с WIA 1 на XP работал. Почему моя машина Форд остановилась? Я купил Chevy — это не совсем ответ. - person Ken White; 14.06.2012
comment
@ken white Я понимаю это. таким образом, в редактировании говорится, что я считаю, что проблема связана с драйвером от производителя, и предлагается обходной путь. это не хорошее использование сайта? - person Vivian Mills; 15.06.2012