所以看到很多人有同样的问题但没有答案。我的 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
}
}
那么问题又来了 - 如何停止显示“视频源”对话框?
最佳答案
我在 Windows XP 上使用 avicap32 开发了一个表格来显示两个实时捕获。我在我的案例中找到的修复方法可能也适用于您的案例。
在 avicap 的情况下,可以通过编程方式管理您的网络摄像头,并且所有这些都是基于注册表的。这是 the thread我找到了指导我并实现我想要的东西。
在此线程中,突出显示了 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaResources\msvideo\MSVideo.VFWWDM\DevicePath
注册表项的作用,用于选择事件网络摄像头。
这可能是一条有用的信息:我必须将值设置为小写以避免弹出视频源对话框。
我通过在使用 WM_CAP_CONNECT
调用 SendMessage
之前和之后监视注册表项来确定它。
据我所知(和谷歌搜索),没有其他人提供修复程序,所以即使我回答的时间可能有点晚,但如果你能告诉我们它是否也适用于你,那就太好了。
关于windows - 网络摄像头,视频源对话框出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10721085/