网络摄像头,视频源对话框出现(webcam, Video Source dialog comes u

2019-10-16 18:19发布

因此,已经看到了同样的问题的,但没有答案,一吨的人。 我的SendMessage流行的了“视频源”对话框上的Windows 7笔记本电脑,一个摄像头。 我安装了讯连科技YouCam中。

如果我卸载讯连科技YouCam中的“视频源”对话框消失。 这似乎是在OS充当虽然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
            }

        }

如此反复,问题是 - 如何阻止出现“视频源”对话框?

Answer 1:

我公司开发的形式在Windows XP上显示与avicap32两个活体捕获。 有机会的话我在我的案件中发现的修补程序也适用于你的。

在avicap的情况下,可以以编程方式管理你的摄像头,并且所有这些都是基于注册表的。 这里是线程我发现来指导我实现我想要的东西。

在此线程的作用HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaResources\msvideo\MSVideo.VFWWDM\DevicePath注册表项强调了积极的网络摄像头的选择。

这里也许是一个有益的一块信息:我不得不将该值设置为小写,以避免视频源对话框弹出。

我之前和调用之后监视注册表项来确定它SendMessageWM_CAP_CONNECT

据我了解(和谷歌搜索)的,没有人提供了一个解决方法,所以尽管我可能会回答晚了一点,那将是巨大的,如果你能告诉我们它是否为你工作为好。



Answer 2:

终于让我找到了一个解决方案。
该问题发生在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 (也许几次)..这就是它......没有更多的视频源对话框



Answer 3:

有了这个解决方案是完美的作品。 该GetTickCount()等待事件与调用函数,直到返回真正的工作一起。

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


Answer 4:

我遇到过同样的问题。 请务必与capDriverDisconnect一旦你不再需要的网络摄像头。 请注意,我使用的是罗技C110,但我想它应该在你的情况下工作了。



Answer 5:

来到这里寻找的“WM_CAP_DRIVER_CONNECT”和“视频设置”对话框弹出错误的解决方案。

找到了解决办法:

这是一个驱动程序问题。 使用OEM的驱动程序,因为通用的Microsoft驱动程序不为您的相机工作。

使用www.astra32.com找出USB摄像头的设备信息:制造商或型号; 那么谷歌的正确的驱动程序。

祝好运!



文章来源: webcam, Video Source dialog comes up