www.pudn.com > motion.zip > CaptureDeviceForm.cs
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using dshow;
using dshow.Core;
namespace motion
{
///
/// Summary description for CaptureDeviceForm.
///
public class CaptureDeviceForm : System.Windows.Forms.Form
{
FilterCollection filters;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ComboBox deviceCombo;
private System.Windows.Forms.Button cancelButton;
private System.Windows.Forms.Button okButton;
private string device;
///
/// Required designer variable.
///
private System.ComponentModel.Container components = null;
// Device
public string Device
{
get { return device; }
}
// Constructor
public CaptureDeviceForm()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
try
{
filters = new FilterCollection(FilterCategory.VideoInputDevice);
if (filters.Count == 0)
throw new ApplicationException();
// add all devices to combo
foreach (Filter filter in filters)
{
deviceCombo.Items.Add(filter.Name);
}
}
catch (ApplicationException)
{
deviceCombo.Items.Add("No local capture devices");
deviceCombo.Enabled = false;
okButton.Enabled = false;
}
deviceCombo.SelectedIndex = 0;
}
///
/// Clean up any resources being used.
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.deviceCombo = new System.Windows.Forms.ComboBox();
this.cancelButton = new System.Windows.Forms.Button();
this.okButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label1
//
this.label1.Location = new System.Drawing.Point(10, 10);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(156, 14);
this.label1.TabIndex = 0;
this.label1.Text = "Select capture device:";
//
// deviceCombo
//
this.deviceCombo.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.deviceCombo.Location = new System.Drawing.Point(10, 30);
this.deviceCombo.Name = "deviceCombo";
this.deviceCombo.Size = new System.Drawing.Size(325, 21);
this.deviceCombo.TabIndex = 6;
//
// cancelButton
//
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.cancelButton.Location = new System.Drawing.Point(180, 78);
this.cancelButton.Name = "cancelButton";
this.cancelButton.TabIndex = 9;
this.cancelButton.Text = "Cancel";
//
// okButton
//
this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
this.okButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.okButton.Location = new System.Drawing.Point(90, 78);
this.okButton.Name = "okButton";
this.okButton.TabIndex = 8;
this.okButton.Text = "Ok";
this.okButton.Click += new System.EventHandler(this.okButton_Click);
//
// CaptureDeviceForm
//
this.AcceptButton = this.okButton;
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.CancelButton = this.cancelButton;
this.ClientSize = new System.Drawing.Size(344, 113);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.cancelButton,
this.okButton,
this.deviceCombo,
this.label1});
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "CaptureDeviceForm";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Open Local Capture Device";
this.ResumeLayout(false);
}
#endregion
// On "Ok" button
private void okButton_Click(object sender, System.EventArgs e)
{
device = filters[deviceCombo.SelectedIndex].MonikerString;
}
}
}