因此,已经看到了同样的问题的,但没有答案,一吨的人。 我的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
}
}
如此反复,问题是 - 如何阻止出现“视频源”对话框?
我公司开发的形式在Windows XP上显示与avicap32两个活体捕获。 有机会的话我在我的案件中发现的修补程序也适用于你的。
在avicap的情况下,可以以编程方式管理你的摄像头,并且所有这些都是基于注册表的。 这里是线程我发现来指导我实现我想要的东西。
在此线程的作用HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaResources\msvideo\MSVideo.VFWWDM\DevicePath
注册表项强调了积极的网络摄像头的选择。
这里也许是一个有益的一块信息:我不得不将该值设置为小写,以避免视频源对话框弹出。
我之前和调用之后监视注册表项来确定它SendMessage
与WM_CAP_CONNECT
。
据我了解(和谷歌搜索)的,没有人提供了一个解决方法,所以尽管我可能会回答晚了一点,那将是巨大的,如果你能告诉我们它是否为你工作为好。
终于让我找到了一个解决方案。
该问题发生在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()
等待事件与调用函数,直到返回真正的工作一起。
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摄像头的设备信息:制造商或型号; 那么谷歌的正确的驱动程序。
祝好运!