camera - C#:微软Surface-win10平板调用摄像头出错
问题描述
[DllImport("avicap32.dll")]
public static extern bool capGetDriverDescriptionA(short wDriver, byte[] lpszName, int cbName, byte[] lpszVer, int cbVer);
[DllImport("avicap32.dll")]
public static extern IntPtr capCreateCaptureWindowA(byte[] lpszWindowName, int dwStyle, int x, int y, int nWidth, int nHeight, IntPtr hWndParent, int nID);
[DllImport("User32.dll")]
public static extern bool SendMessage(IntPtr hWnd, int wMsg, short wParam, int lParam);
[DllImport("User32.dll")]
public static extern bool SendMessage(IntPtr hWnd, int wMsg, bool wParam, int lParam);
public const int WM_USER = 0x400;
public const int WS_CHILD = 0x40000000;
public const int WS_VISIBLE = 0x10000000;
public const int WM_CAP_DRIVER_CONNECT = WM_USER + 10;
public const int WM_CAP_DRIVER_DISCONNECT = WM_USER + 11;
public const int WM_CAP_SET_PREVIEW = WM_USER + 50;
public const int WM_CAP_SET_PREVIEWRATE = WM_USER + 52;
byte[] lpszName = new byte[100];
byte[] lpszVer = new byte[100];
capGetDriverDescriptionA(0, lpszName, 100, lpszVer, 100);
IntPtr lwndC = capCreateCaptureWindowA(lpszName, WS_VISIBLE + WS_CHILD, 0, 0, mWidth, mHeight, mControlPtr, 0);
//当程序运行到下面的代码时,会出现一个摄像头选择对话框(Microsoft Camera Front/Microsoft Camera Rear)。选择其中任何一个后,if语句中的代码不执行,相机无法正常运行。谁能帮我?为什么会这样,谢谢。
if (SendMessage(lwndC, VideoAPI.WM_CAP_DRIVER_CONNECT, 0, 0))
{
SendMessage(lwndC, WM_CAP_SET_PREVIEWRATE, 66, 0);
SendMessage(lwndC, WM_CAP_SET_PREVIEW, true, 0);
}
解决方案
推荐阅读
- angular - 如何更改角度 Kendo Grid 中的默认过滤器运算符
- java - Idea Intellij 删除了我在 src/main IIIIII 中的所有文件
- plsql-package - for-loop 不适用于 select 语句中的以下记录类型变量
- wpf - 如何在 menuitem WPF 中添加快捷键
- karate - 在空手道框架中使用 windows winapp_driver 属性
- animation - SwiftUI - 响应父视图中的点击
- date - 如何在 Alteryx 中将日期转换为一般格式?
- c - 你可以翻转一个运行时间为 O(1) 的堆栈吗?
- docker - 在 Windows 10 机器上看不到 Windows Container 的 Kubernetes 选项
- python-3.x - 以编程方式创建带符号 32 位浮点数的最大值的十进制(Python3)