public partial class Form1 : Form
{
private int hHwnd;
private const int prot = 200;
public Form1()
{
InitializeComponent();
}
//视频HDR标签结构
//public struct videohdr_tag
//{
// public byte[] lpDate;
// public int dwBuffterLenght;//数据缓冲区的长度
// public int dwBytesUsed;//数据使用的字节
// public int dwTimeCaptured;//数据的时间
// public int dwUser;//数据的仓库用户
// public int dwFlags;//数据的标志
// public int[] dwReserved;//数据仓库保留
//}
public delegate bool CallBack(int hwnd, int lParam);//回调
/// <summary>
/// 必需的设计器变量。
/// </summary>
[DllImport("avicap32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
public static extern int capCreateCaptureWindowA([MarshalAs(UnmanagedType.VBByRefStr)] ref string lpszWindowName, int dwStyle, int x, int y, int nWidth, short nHeight, int hWndParent, int nID);
[DllImport("user32",EntryPoint ="SendMessageA",CharSet =CharSet.Ansi,SetLastError =true,ExactSpelling =true)]
public static extern int SendMessage(int hwnd,int wMsg,int wParam,[MarshalAs(UnmanagedType.AsAny)] object lPanam);
[DllImport("user32",CharSet =CharSet.Ansi,SetLastError =true,ExactSpelling =true)]
public static extern int SetWindowPos(int hwnd, int hWndInsertAfter, int x, int y, int cx, int cy, int wFlags);//设置窗口
/// <summary>
/// 打开摄像头
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
int intWidth = this.panel1.Width;
int intHeight = this.panel1.Height;
int intDevice = 0;
string refDevice = intDevice.ToString();
hHwnd = Form1.capCreateCaptureWindowA(ref refDevice, 1342177280, 0, 0, 1024, 800, this.panel1.Handle.ToInt32(), 0);
if (Form1.SendMessage(hHwnd,0x40a,intDevice,0)>0)
{
Form1.SendMessage(this.hHwnd, 0x435, -1, 0);
Form1.SendMessage(this.hHwnd, 0x434, 0x42, 0);
Form1.SendMessage(this.hHwnd, 0x432, -1, 0);
Form1.SetWindowPos(this.hHwnd, 1, 0, 0, intWidth, intHeight,6);
}
else
{
}
}
}