摄像头,video源对话框出现

所以看到很多人都有同样的问题,但没有答案。 我的SendMessagepopup窗口上的一个Windows 7笔记本电脑上的“video源”对话框与一台摄像机。 我已经安装了Cyber​​ Link YouCam。 “视频源”对话框

如果我卸载Cyber​​ Link YouCam,则“video源”对话框将消失。 好像YouCam是同一设备的第二个驱动程序似乎是操作系统。 我的问题是如何停止“video源”对话框出现? 一旦我在对话框中select一个选项,我就不会得到对话框(直到我重新启动应用程序),所以必须有一个设置的地方设置。

虽然debugging发现这一点的代码(看下面的整个部分)似乎是一个调用对话框 – 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 } } 

所以问题再次 – 如何停止“video源”的对话框出现?

Solutions Collecting From Web of "摄像头,video源对话框出现"

我开发了一个窗体,在Windows XP上用avicap32显示两个实时捕捉。 有一个机会,我发现在我的情况下修复也适用于你的。

在avicap的情况下,可以以编程方式管理您的网络摄像头,所有这些都是基于注册表的。 这是我发现的指导我,实现我想要的。

在此线程中, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaResources\msvideo\MSVideo.VFWWDM\DevicePath注册表项的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaResources\msvideo\MSVideo.VFWWDM\DevicePath突出显示,用于选择活动摄像头。

这里也许是一个有用的信息:我必须设置小写的值,以避免视频源对话框弹出。

我通过在使用WM_CAP_CONNECT调用SendMessage之前和之后监视注册表项来确定它。

据我所知(和谷歌搜索),没有人提供了一个解决方案,所以即使我可能会迟一点回答,如果你能告诉我们它是否也适用于你,这将是很好的。

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

有了这个解决方案,它是完美的 等待事件的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 

我遇到过同样的问题。 一旦你不再需要网络摄像头,确保你打电话给capDriverDisconnect。 请注意,我正在使用罗技C110,但我想它也适用于您的情况。

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

找到解决方案:

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

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

祝你好运!