求助,C# 操作USB口的摄像头,打开时总弹出视频源对话框。

kkilll1590 2012-11-05 08:20:46
我在网上找的代码。
if (SendMessage(hHwnd, WM_CAP_DRIVER_CONNECT, iDevice, 0) == 1)
执行到这句时会出现。选择视频源的对话框,点确定后有时可以打开摄像头有时还不好使。为什么呢?
有没有好的解决办法?
或有别的方法。请各位帮帮忙。
...全文
2389 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
highbuilding 2015-07-08
  • 打赏
  • 举报
回复
引用 15 楼 bingejesse 的回复:
这个我以前也遇到过,也是用即插即用的免驱动摄像头,代码也是网上下的。开始也遇到和你一样的问题,后来我怒了,根据SendMessageA的函数原型自己重新写了Import引用方法,还把初始化摄像头获得显示控件句柄的方法移到类创建时就执行,而非在打开摄像头前。后来就再也没有问题了~
跪求代码,731111589@qq.com
highbuilding 2015-07-08
  • 打赏
  • 举报
回复
731111589@qq.com 能否给一份代码,谢谢!!
无涯大者 2015-05-24
  • 打赏
  • 举报
回复
引用 25 楼 zhangsanlaola 的回复:
[quote=引用 15 楼 bingejesse 的回复:] 这个我以前也遇到过,也是用即插即用的免驱动摄像头,代码也是网上下的。开始也遇到和你一样的问题,后来我怒了,根据SendMessageA的函数原型自己重新写了Import引用方法,还把初始化摄像头获得显示控件句柄的方法移到类创建时就执行,而非在打开摄像头前。后来就再也没有问题了~
可以给我一份解决问题的代码吗,跪求!谢谢![/quote] 我也需要,能否分享下!fqt2004@qq.com
qq_24529271 2015-05-24
  • 打赏
  • 举报
回复
这个问题该怎么解决?求答案1020301592@qq.com
jim6978 2015-05-04
  • 打赏
  • 举报
回复
Quote: 引用 15 楼 bingejesse 的回复: 这个我以前也遇到过,也是用即插即用的免驱动摄像头,代码也是网上下的。开始也遇到和你一样的问题,后来我怒了,根据SendMessageA的函数原型自己重新写了Import引用方法,还把初始化摄像头获得显示控件句柄的方法移到类创建时就执行,而非在打开摄像头前。后来就再也没有问题了~ 可以给我一份解决问题的代码吗,跪求!谢谢!1265759912@qq.com
ladenglaola 2015-01-22
  • 打赏
  • 举报
回复
引用 25 楼 zhangsanlaola 的回复:
[quote=引用 15 楼 bingejesse 的回复:] 这个我以前也遇到过,也是用即插即用的免驱动摄像头,代码也是网上下的。开始也遇到和你一样的问题,后来我怒了,根据SendMessageA的函数原型自己重新写了Import引用方法,还把初始化摄像头获得显示控件句柄的方法移到类创建时就执行,而非在打开摄像头前。后来就再也没有问题了~
可以给我一份解决问题的代码吗,跪求!谢谢!zf560@126.com
ladenglaola 2015-01-22
  • 打赏
  • 举报
回复
引用 15 楼 bingejesse 的回复:
这个我以前也遇到过,也是用即插即用的免驱动摄像头,代码也是网上下的。开始也遇到和你一样的问题,后来我怒了,根据SendMessageA的函数原型自己重新写了Import引用方法,还把初始化摄像头获得显示控件句柄的方法移到类创建时就执行,而非在打开摄像头前。后来就再也没有问题了~
可以给我一份解决问题的代码吗,跪求!谢谢!
北京大白兔 2014-08-08
  • 打赏
  • 举报
回复
能分享吗?谢谢大哥哥
tlgxbgs 2013-06-08
  • 打赏
  • 举报
回复
俺今年也想用C#加avicap32.dll控制USB摄像头,结果也遇到这个问题,家里穷电脑上就一个摄像头,还老弹出选择视频源的框,你说烦不烦啊。俺也没本事像15楼高手重写SendMessageA,只好另开一个线程,有findwindowEX找到选择视频源对话框,用程序模拟点确定。 基本代码是这样: 加上定义和引用: private const uint BM_CLICK = 0xF5; //鼠标点击的消息,对于各种消息的数值,查API手册,也可用VS2010自带的SPY++ [DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true, CharSet = CharSet.Auto)] private static extern int SendMessage(IntPtr hwnd, uint wMsg, IntPtr wParam, int lParam); //开个线程准备关闭对话框 System.Threading.Thread th = new System.Threading.Thread(new System.Threading.ThreadStart(closevideoprompt)); th.Start(); //线程中关闭对话框的函数 private void closevideoprompt() { while (true) { System.Threading.Thread.Sleep(100); IntPtr hWnd = FindWindow(null, "视频源"); //this.textBox1.Text = hWnd.ToString() + "!"; //ShowWindow(hWnd, SW_RESTORE); //将窗口还原 //SetForegroundWindow(hWnd); //如果没有ShowWindow,此方法不能设置最小化的窗口 if (hWnd != IntPtr.Zero) { IntPtr hwndSure = FindWindowEx(hWnd, (IntPtr)0, "Button", "确定"); //获取确定按钮的句柄 SendMessage(hwndSure, BM_CLICK, (IntPtr)0, 0); //发送单击消息 } } } //6次不成功就算了 int i = 0 , j = 0; while (i != 1) { i = SendMessage(hHwnd, WM_CAP_DRIVER_CONNECT, iDevice, 0); System.Threading.Thread.Sleep(100); j++; if (j > 6) { MessageBox.Show("请确认视频连接正常!"); th.Abort(); return; } } 勉强算解决了这个问题。就是开视频时用户还能看到视频源对话框一闪而过。
u010995497 2013-06-07
  • 打赏
  • 举报
回复
线程阻塞 有另一个程序也开了相同的线程 把那个线程关了就行了
haogui21 2013-05-27
  • 打赏
  • 举报
回复
偶也遇到这个问题
zoejiney 2013-04-30
  • 打赏
  • 举报
回复
我也碰到这个问题了,有解决方法了吗?
salecn 2012-11-08
  • 打赏
  • 举报
回复
来学习一下!
Trent1985 2012-11-08
  • 打赏
  • 举报
回复
其实根本不需要楼主你那么做,给你个DEMO的地址,纯C#的,不需要调用API,直接打开网络摄像头的,绝对物有所值,别忘了给点分哦!!!http://www.codesoso.com/code/Motion_Detection.aspx
kkilll1590 2012-11-07
  • 打赏
  • 举报
回复
引用 15 楼 bingejesse 的回复:
这个我以前也遇到过,也是用即插即用的免驱动摄像头,代码也是网上下的。开始也遇到和你一样的问题,后来我怒了,根据SendMessageA的函数原型自己重新写了Import引用方法,还把初始化摄像头获得显示控件句柄的方法移到类创建时就执行,而非在打开摄像头前。后来就再也没有问题了~
高手。。可不可以把你写的给我发一份我学习一下。谢谢 kkilll_123@163.com
lshfong 2012-11-07
  • 打赏
  • 举报
回复
用API一下
bingejesse 2012-11-06
  • 打赏
  • 举报
回复
这个我以前也遇到过,也是用即插即用的免驱动摄像头,代码也是网上下的。开始也遇到和你一样的问题,后来我怒了,根据SendMessageA的函数原型自己重新写了Import引用方法,还把初始化摄像头获得显示控件句柄的方法移到类创建时就执行,而非在打开摄像头前。后来就再也没有问题了~
XBodhi. 2012-11-06
  • 打赏
  • 举报
回复
引用 12 楼 qiujialongjjj 的回复:
如果全是代码控制的话,结束的时候有关闭摄像头功能的代码吗?如果只是想调用摄像头,可以直接打开程序或者程序的快捷方式
这个方式 够独特,够简单。 你是不是有的时候没有释放资源,所以打不开了。
风一样的大叔 2012-11-06
  • 打赏
  • 举报
回复
如果全是代码控制的话,结束的时候有关闭摄像头功能的代码吗?如果只是想调用摄像头,可以直接打开程序或者程序的快捷方式
kxloveh 2012-11-06
  • 打赏
  • 举报
回复
先顶顶,研究研究
加载更多回复(10)

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧