веб-камера, появляется диалоговое окно Video Source

Так что видел массу людей с той же проблемой, но без ответов. Мой SendMessage всплывает в диалоговом окне «Источник видео» на ноутбуке с Windows 7 с одной камерой. У меня установлена ​​программа Cyber ​​Link YouCam. диалоговое окно

Если я удалю Cyber ​​Link YouCam, диалоговое окно «Источник видео» исчезнет. Похоже, ОС ведет себя так, как будто YouCam является вторым драйвером для того же устройства. Мой вопрос: как остановить появление диалогового окна «Источник видео»? Как только я выбираю параметр в диалоговом окне, я не получаю диалоговое окно (пока я не перезапускаю приложение), поэтому где-то должен быть установлен параметр.

Хотя отладка обнаружила этот фрагмент кода (см. весь раздел ниже), похоже, именно он вызывает диалоговое окно — SendMessage (deviceHandle, WM_CAP_CONNECT, deviceno, ((IntPtr) 0).ToInt32 ())

 public void StartWebCam (int height, int width, int handleofthepicturebox, int deviceno)
        {

        string deviceIndex = "" + deviceno;

        deviceHandle = capCreateCaptureWindowA (ref deviceIndex, WS_VISIBLE | WS_CHILD, 0, 0, width, height, handleofthepicturebox, 0);


        if (SendMessage (deviceHandle, WM_CAP_CONNECT, deviceno, ((IntPtr) 0).ToInt32 ()) > 0)
            {


            SendMessage (deviceHandle, WM_CAP_SET_SCALE, -1, 0);
            SendMessage (deviceHandle, WM_CAP_SET_PREVIEWRATE, 0x42, 0);
            SendMessage (deviceHandle, WM_CAP_SET_PREVIEW, -1, 0);

            }
        else
            {
            // nothing failed maybe some clean up needed
            }

        }

Итак, снова вопрос: как мне остановить появление диалогового окна «Источник видео»?


person Brian Hanf    schedule 23.05.2012    source источник
comment
Используйте более современные API захвата видео в Windows: DirectShow или Media Foundation. VFW, который вы используете, давно устарел, и кажется, что YouCam каким-то плохим образом подключает его, чтобы вызвать всплывающее диалоговое окно.   -  person Roman R.    schedule 16.06.2012
comment
Спасибо, Роман Р. Кажется, я не могу найти много информации о C# или .net в Media Foundation.   -  person Brian Hanf    schedule 21.06.2012
comment
Я создал вопрос о том, в каком направлении Я должен принять.   -  person Brian Hanf    schedule 21.06.2012
comment
В этом вопросе вы указываете, что вам нужна поддержка Windows XP. Тогда Media Foundation вам не подойдет, поэтому DirectShow — лучшее, что вы можете иметь для потоковой передачи видео. Возможно, WIA для фотосъемки.   -  person Roman R.    schedule 21.06.2012


Ответы (5)


Я разработал форму для отображения двух снимков в реальном времени с помощью avicap32 в Windows XP. Есть шанс, что исправление, которое я нашел в моем случае, также применимо к вашему.

В случае с avicap можно программно управлять вашими веб-камерами, и все это на основе реестра. Вот тема Я нашел руководство и достиг того, чего хотел.

В этой теме выделена роль ключа реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaResources\msvideo\MSVideo.VFWWDM\DevicePath для выбора активной веб-камеры.

И вот, возможно, полезная информация: мне пришлось установить значение в нижнем регистре, чтобы избежать появления диалогового окна «Источник видео».

Я определил это, отслеживая ключ реестра до и после вызова SendMessage с WM_CAP_CONNECT.

Насколько мне известно (и я погуглил), никто другой не предложил исправление, поэтому, хотя я могу ответить немного поздно, было бы здорово, если бы вы могли сказать нам, сработало ли это и для вас.

person slv    schedule 10.01.2013
comment
Еще не поздно, все еще работаю над проектом. Посмотрю на ваш ответ ближе через несколько недель. - person Brian Hanf; 23.01.2013
comment
Я больше не работаю над этим проектом, поэтому не смог попробовать решение. Так что я не знаю, ответил ли он на вопрос. Хотя плюс 1 поставил - person Brian Hanf; 19.06.2013

Наконец-то я нашел решение для этого.
Проблема возникает в Windows 7 / 8

Сначала вам нужна эта функция API

Private Declare Function GetTickCount Lib "kernel32" () As Long

Затем... после вызова capCreateCaptureWindowA() вам нужно подождать 1 секунду обработки событий (примечание: сон не работает одинаково)

IniTime = GetTickCount()
While GetTickCount() < (IniTime + 1000)
   DoEvents
Wend

затем вы звоните WM_CAP_DRIVER_CONNECT (может быть, пару раз).. и ЭТО ОНО ... больше нет диалога источника видео

person Theo    schedule 02.10.2014

С этим решением все работает идеально. Ожидание событий GetTickCount() работало вместе с вызовом функции, пока не возвращалось значение true.

Private Sub PreviewVideo(ByVal pbCtrl As PictureBox)    
    hWnd = capCreateCaptureWindowA(VideoSource, WS_VISIBLE Or WS_CHILD, 0, 0, 0,
   0, pbCtrl.Handle.ToInt64, 0)    
    Dim IniTime As Long = GetTickCount() 
    While GetTickCount() < (IniTime + 1000)
        Application.DoEvents()
    End While    
    Dim OKAnswer As Boolean = False
    For xretries As Integer = 1 To 10
          ' I'll give you Only 10 tries to connect, otherwise I AM LEAVING MICROSOFT!
          OKAnswer = SendMessage(hWnd, WM_CAP_DRIVER_CONNECT, VideoSource, 0)
          If OKAnswer Then
              Exit For
          End If    
    Next    
    If okanswer Then
          SendMessage(hWnd, WM_CAP_SET_SCALE, True, 0)
          SendMessage(hWnd, WM_CAP_SET_PREVIEWRATE, 30, 0)
          SendMessage(hWnd, WM_CAP_SET_PREVIEW, True, 0)
          SetWindowPos(hWnd, HWND_BOTTOM, 0, 0, pbCtrl.Width, pbCtrl.Height, SWP_NOMOVE Or SWP_NOZORDER)    
    Else
          DestroyWindow(hWnd)    
    End If    
End Sub
person cappcorp    schedule 12.06.2015

Я была такая же проблема. Убедитесь, что вы вызываете capDriverDisconnect, когда вам больше не нужна веб-камера. Обратите внимание, что я использую Logitech C110, но я полагаю, что это должно работать и в вашем случае.

person limcy_at_mip    schedule 17.06.2013

Пришел сюда в поисках решения для всплывающего диалогового окна «WM_CAP_DRIVER_CONNECT» и «Настройка видео».

НАШЕЛ решение:

Это проблема с драйвером. Используйте OEM-драйвер, поскольку стандартные драйверы Microsoft НЕ подходят для вашей камеры.

Используйте www.astra32.com, чтобы узнать информацию об устройстве USB-камеры: производитель или модель; затем погуглите правильные драйвера.

Удачи!

person carabez    schedule 19.07.2017