/// <summary> /// Attaches the preview stream to the given control /// </summary> /// <param name="control">the control</param> public void Attach(System.Windows.Forms.Control control) { deviceHandle = Avicap32.capCreateCaptureWindow("", Constants.WS_VISIBLE | Constants.WS_CHILD, 0, 0, control.Width, control.Height, control.Handle, 0); if (User32.SendMessage(deviceHandle, Constants.WM_CAP_DRIVER_CONNECT, (IntPtr)deviceNumber, (IntPtr)0).ToInt32() > 0) { User32.SendMessage(deviceHandle, Constants.WM_CAP_SET_SCALE, (IntPtr)(-1), (IntPtr)0); User32.SendMessage(deviceHandle, Constants.WM_CAP_SET_PREVIEWRATE, (IntPtr)0x42, (IntPtr)0); User32.SendMessage(deviceHandle, Constants.WM_CAP_SET_PREVIEW, (IntPtr)(-1), (IntPtr)0); User32.SetWindowPos(deviceHandle, new IntPtr(0), 0, 0, control.Width, control.Height, 6); } }
/// <summary> /// Returns an array with available capture devices /// </summary> /// <returns>the device names</returns> public static List <CaptureDevice> GetDevices() { List <CaptureDevice> devices = new List <CaptureDevice>(); for (ushort i = 0; i < MAX_DEVICES; ++i) { int capacity = 200; StringBuilder name = new StringBuilder(capacity); StringBuilder description = new StringBuilder(capacity); if (Avicap32.capGetDriverDescription(i, name, capacity, description, capacity).ToInt32() > 0) { devices.Add(new CaptureDevice(i, name.ToString(), description.ToString())); } } return(devices); }