ctrlImageOverlay.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using BytescoutScreenCapturingLib;
namespace ScreenCapturingClient
{
public partial class ctrlImageOverlay : UserControl
{
ImageOverlay _imageOverlay = null;
ICapturer _capturer = null;
int _index = -1;
bool _isLoaded = false;
public ctrlImageOverlay()
{
InitializeComponent();
}
public ctrlImageOverlay(ImageOverlay imageOverlay, int index, ICapturer capturer)
{
InitializeComponent();
_imageOverlay = imageOverlay;
_index = index;
_capturer = capturer;
nmLeft.Value = _imageOverlay.Left;
nmTop.Value = _imageOverlay.Top;
txtFileName.Text = _imageOverlay.FileName;
chkVisible.Checked = _imageOverlay.Visible;
txtFileName.Enabled = false;
btnBrowseFile.Enabled = false;
_isLoaded = true;
}
private void btnBrowseFile_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Bitmap Files (*.bmp)|*.bmp|Png Files (*.png)|*.png";
if (dlg.ShowDialog() == DialogResult.OK)
{
txtFileName.Text = dlg.FileName;
}
}
private void nmLeft_ValueChanged(object sender, EventArgs e)
{
if (_imageOverlay != null && _capturer != null && _index != -1 && _isLoaded)
{
_capturer.UpdateOverlayPosition(_index, (int)nmLeft.Value, (int)nmTop.Value);
_imageOverlay.Left = (int)nmLeft.Value;
}
}
private void nmTop_ValueChanged(object sender, EventArgs e)
{
if (_imageOverlay != null && _capturer != null && _index != -1 && _isLoaded)
{
_capturer.UpdateOverlayPosition(_index, (int)nmLeft.Value, (int)nmTop.Value);
_imageOverlay.Top = (int)nmTop.Value;
}
}
public ImageOverlay GetImageOverlay()
{
if (_imageOverlay == null)
{
_imageOverlay = new ImageOverlay();
_imageOverlay.Left = (int)nmLeft.Value;
_imageOverlay.Top = (int)nmTop.Value;
_imageOverlay.Visible = chkVisible.Checked;
_imageOverlay.FileName = txtFileName.Text;
}
return _imageOverlay;
}
private void chkVisible_CheckedChanged(object sender, EventArgs e)
{
if (_imageOverlay != null && _capturer != null && _index != -1 && _isLoaded)
{
_capturer.UpdateOverlayVisibility(_index, chkVisible.Checked);
_imageOverlay.Visible = chkVisible.Checked;
}
}
}
}
ctrlTextOverlay.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using BytescoutScreenCapturingLib;
namespace ScreenCapturingClient
{
public partial class ctrlTextOverlay : UserControl
{
TextOverlay _textOverlay = null;
ICapturer _capturer = null;
int _index = -1;
bool _isLoaded = false;
public ctrlTextOverlay()
{
InitializeComponent();
pnlBackColor.BackColor = Color.Transparent;
}
public ctrlTextOverlay(TextOverlay textOverlay, int index, ICapturer capturer)
{
InitializeComponent();
_textOverlay = textOverlay;
_index = index;
_capturer = capturer;
nmLeft.Value = _textOverlay.Left;
nmTop.Value = _textOverlay.Top;
txtText.Text = _textOverlay.Text;
txtFont.Text = _textOverlay.Font.Name;
txtFont.Font = _textOverlay.Font;
pnlColor.BackColor = _textOverlay.Color;
chkVisible.Checked = _textOverlay.Visible;
btnUpdate.Visible = true;
chkBackColor.Checked = _textOverlay.BackColor != Color.Transparent;
btnBackColor.Enabled = _textOverlay.BackColor != Color.Transparent;
pnlBackColor.BackColor = _textOverlay.BackColor;
txtFont.Enabled = false;
btnFont.Enabled = false;
pnlColor.Enabled = false;
btnColor.Enabled = false;
chkBackColor.Enabled = false;
btnBackColor.Enabled = false;
pnlBackColor.Enabled = false;
_isLoaded = true;
}
private void btnFont_Click(object sender, EventArgs e)
{
FontDialog dlg = new FontDialog();
dlg.Font = txtFont.Font;
if (dlg.ShowDialog() == DialogResult.OK)
{
txtFont.Font = dlg.Font;
txtFont.Text = dlg.Font.Name;
if (_textOverlay != null)
{
_textOverlay.Font = dlg.Font;
}
}
}
private void btnColor_Click(object sender, EventArgs e)
{
ColorDialog dlg = new ColorDialog();
dlg.AllowFullOpen = true;
dlg.AnyColor = true;
dlg.FullOpen = true;
dlg.CustomColors = new int[] { Color.Transparent.ToArgb() };
dlg.Color = pnlColor.BackColor;
if (dlg.ShowDialog() == DialogResult.OK)
{
pnlColor.BackColor = dlg.Color;
if (_textOverlay != null)
{
_textOverlay.Color = dlg.Color;
}
}
}
private void btnUpdate_Click(object sender, EventArgs e)
{
if (_textOverlay != null && _capturer != null && _index != -1)
{
_capturer.UpdateTextOverlay(_index, txtText.Text);
_textOverlay.Text = txtText.Text;
}
}
private void nmLeft_ValueChanged(object sender, EventArgs e)
{
if (_textOverlay != null && _capturer != null && _index != -1 && _isLoaded)
{
_capturer.UpdateOverlayPosition(_index, (int)nmLeft.Value, (int)nmTop.Value);
_textOverlay.Left = (int)nmLeft.Value; ;
}
}
private void nmTop_ValueChanged(object sender, EventArgs e)
{
if (_textOverlay != null && _capturer != null && _index != -1 && _isLoaded)
{
_capturer.UpdateOverlayPosition(_index, (int)nmLeft.Value, (int)nmTop.Value);
_textOverlay.Top = (int)nmTop.Value;
}
}
private void chkVisible_CheckedChanged(object sender, EventArgs e)
{
if (_textOverlay != null && _capturer != null && _index != -1 && _isLoaded)
{
_capturer.UpdateOverlayVisibility(_index, chkVisible.Checked);
_textOverlay.Visible = chkVisible.Checked;
}
}
public TextOverlay GetTextOverlay()
{
if (_textOverlay == null)
{
_textOverlay = new TextOverlay();
_textOverlay.Left = (int)nmLeft.Value;
_textOverlay.Top = (int)nmTop.Value;
_textOverlay.Text = txtText.Text;
_textOverlay.Font = txtFont.Font;
_textOverlay.Color = pnlColor.BackColor;
_textOverlay.Visible = chkVisible.Checked;
_textOverlay.BackColor = pnlBackColor.BackColor;
}
return _textOverlay;
}
private void chkBackColor_CheckedChanged(object sender, EventArgs e)
{
btnBackColor.Enabled = chkBackColor.Checked;
pnlBackColor.Enabled = chkBackColor.Checked;
if (!chkBackColor.Checked)
{
pnlBackColor.BackColor = Color.Transparent;
}
if (_textOverlay != null)
{
_textOverlay.BackColor = pnlBackColor.BackColor;
}
}
private void btnBackColor_Click(object sender, EventArgs e)
{
ColorDialog dlg = new ColorDialog();
dlg.AllowFullOpen = true;
dlg.AnyColor = true;
dlg.FullOpen = true;
dlg.Color = pnlBackColor.BackColor;
if (dlg.ShowDialog() == DialogResult.OK)
{
pnlBackColor.BackColor = dlg.Color;
if (_textOverlay != null)
{
_textOverlay.BackColor = dlg.Color;
}
}
}
}
}
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BytescoutScreenCapturingLib;
namespace ScreenCapturingClient
{
public partial class Form1 : Form
{
ICapturer _capturer;
int _previewHdc;
Graphics _previewGraphics;
private bool _isPaused = false;
public Form1()
{
InitializeComponent();
}
private void InitCapturer()
{
_capturer = new CapturerClass();
_capturer.RegistrationName = "demo";
_capturer.RegistrationKey = "demo";
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
InitCapturer();
cmbWebCam.Items.Clear();
for (int i = 0; i < _capturer.WebCamCount; i++)
{
cmbWebCam.Items.Add(_capturer.GetWebCamName(i));
}
if (cmbWebCam.Items.Count > 0)
cmbWebCam.SelectedIndex = 0;
cmbVideoCodec.Items.Clear();
for (int i = 0; i < _capturer.VideoCodecsCount; i++)
{
cmbVideoCodec.Items.Add(_capturer.GetVideoCodecName(i));
}
if (cmbVideoCodec.Items.Count > 0)
cmbVideoCodec.SelectedIndex = 0;
cmbAudioDevices.Items.Clear();
for (int i = 0; i < _capturer.AudioDeviceCount; i++)
{
cmbAudioDevices.Items.Add(_capturer.GetAudioDeviceName(i));
}
if (cmbAudioDevices.Items.Count > 0)
cmbAudioDevices.SelectedIndex = 0;
cmbAudioCodecs.Items.Clear();
for (int i = 0; i < _capturer.AudioCodecsCount; i++)
{
cmbAudioCodecs.Items.Add(_capturer.GetAudioCodecName(i));
}
if (cmbAudioCodecs.Items.Count > 0)
cmbAudioCodecs.SelectedIndex = 0;
cmbCaptureAreaType.Items.Clear();
cmbCaptureAreaType.DataSource = Enum.GetValues(typeof(CaptureAreaType));
cmbCaptureAreaType.SelectedIndex = 0;
cmbMotionDetection.Items.Clear();
cmbMotionDetection.DataSource = Enum.GetValues(typeof(RecordingModeType));
cmbMotionDetection.SelectedIndex = 0;
cmbCurrentMonitor.Items.Add(-1);
cmbCurrentMonitor.Enabled = false;
if (_capturer.MonitorCount > 1)
{
cmbCurrentMonitor.Enabled = true;
for (int i = 0; i < _capturer.MonitorCount; i++)
{
cmbCurrentMonitor.Items.Add(i);
}
}
cmbCurrentMonitor.SelectedIndex = 0;
HandleMonitors();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void chkEnableAudio_CheckedChanged(object sender, EventArgs e)
{
cmbAudioDevices.Enabled = chkEnableAudio.Checked;
cmbAudioCodecs.Enabled = chkEnableAudio.Checked;
}
private void chkEnableWebcam_CheckedChanged(object sender, EventArgs e)
{
_capturer.AddWebCamVideo = chkEnableWebcam.Checked;
cmbWebCam.Enabled = chkEnableWebcam.Checked;
nmWebCamLeft.Enabled = chkEnableWebcam.Checked;
nmWebCamTop.Enabled = chkEnableWebcam.Checked;
nmWebCamWidth.Enabled = chkEnableWebcam.Checked;
nmWebCamHeight.Enabled = chkEnableWebcam.Checked;
}
private void btnOutputFile_Click(object sender, EventArgs e)
{
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "Windows Media Video (*.wmv)|*.wmv| AVI video (*.avi)|*.avi";
if (dlg.ShowDialog() == DialogResult.OK)
{
txtOutputFile.Text = dlg.FileName;
}
}
private void btnLogFile_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Text Files (*.txt)|*.txt";
if (dlg.ShowDialog() == DialogResult.OK)
{
txtLogFile.Text = dlg.FileName;
}
}
bool _captureStarted = false;
private void btnRecord_Click(object sender, EventArgs e)
{
try
{
if (_capturer.IsRunning)
{
_capturer.Stop();
System.Runtime.InteropServices.Marshal.ReleaseComObject(_capturer);
_capturer = null;
InitCapturer();
// lstOverlays.Items.Clear();
btnRecord.Text = "Record";
tabControl1.Enabled = true;
lblStatus.Text = "Stopped";
timer1.Stop();
_captureStarted = false;
btnPause.Enabled = false;
_isPaused = false;
}
else
{
if (!_isPaused)
{
_capturer.AudioEnabled = chkEnableAudio.Checked;
if (chkEnableAudio.Checked)
{
_capturer.CurrentAudioDeviceName = cmbAudioDevices.SelectedItem.ToString();
//_capturer.CurrentAudioCodecName = cmbAudioCodecs.SelectedItem.ToString();
}
_capturer.AddWebCamVideo = chkEnableWebcam.Checked;
if (chkEnableWebcam.Checked)
{
_capturer.SetWebCamVideoRectangle((int)nmWebCamLeft.Value, (int)nmWebCamTop.Value, (int)nmWebCamWidth.Value, (int)nmWebCamHeight.Value);
_capturer.CurrentWebCamName = cmbWebCam.SelectedItem.ToString();
}
//_capturer.CurrentVideoCodecName = cmbVideoCodec.SelectedItem.ToString();
if (!string.IsNullOrEmpty(txtLogFile.Text) && cbWriteLog.Checked)
{
_capturer.SetLogFile(txtLogFile.Text);
}
_capturer.OutputFileName = txtOutputFile.Text;
_capturer.CapturingType = (CaptureAreaType)cmbCaptureAreaType.SelectedItem;
_previewGraphics = pnlPreview.CreateGraphics();
_previewHdc = _previewGraphics.GetHdc().ToInt32();
_capturer.SetFullPreviewContext(_previewHdc, 0, 0, pnlPreview.Width, pnlPreview.Height, 5);
_capturer.CaptureRectLeft = (int)nmCaptureLeft.Value;
_capturer.CaptureRectTop = (int)nmCaptureTop.Value;
_capturer.CaptureRectWidth = (int)nmCaptureWidth.Value;
_capturer.CaptureRectHeight = (int)nmCaptureHeight.Value;
_capturer.OutputWidth = (int)nmOutputWidth.Value;
_capturer.OutputHeight = (int)nmOutputHeight.Value;
foreach (ListViewItem item in lstOverlays.Items)
{
Overlay overlay = item.Tag as Overlay;
if (overlay is TextOverlay)
{
TextOverlay textOverlay = overlay as TextOverlay;
int a = (int)textOverlay.BackColor.A;
//_capturer.AddTextOverlay(textOverlay.Left, textOverlay.Top, textOverlay.Text, textOverlay.Font.Name,
// (int)textOverlay.Font.Size,textOverlay.Font.Bold, textOverlay.Font.Italic,
// textOverlay.Font.Underline, (uint)ColorTranslator.ToOle(textOverlay.Color));
_capturer.AddTextOverlayWithBackground2(textOverlay.Left, textOverlay.Top, textOverlay.Text, textOverlay.Font.Name,
(int)textOverlay.Font.Size, textOverlay.Font.Bold, textOverlay.Font.Italic,
textOverlay.Font.Underline,
textOverlay.Color.R, textOverlay.Color.G, textOverlay.Color.B, textOverlay.Color.A,
textOverlay.BackColor.R, textOverlay.BackColor.G, textOverlay.BackColor.B, textOverlay.BackColor.A);
}
else if (overlay is ImageOverlay)
{
ImageOverlay imageOverlay = overlay as ImageOverlay;
_capturer.AddImageOverlay(imageOverlay.Left, imageOverlay.Top, imageOverlay.FileName);
}
}
_capturer.RecordingMode = (RecordingModeType)cmbMotionDetection.SelectedItem;
_capturer.NoMotionDetectedActionInterval = (int)nmMotionInterval.Value;
_capturer.NoMotionDetectedActionSensitivity = (double)nmMotionSensitivity.Value;
_capturer.MonitorIndex = (int)cmbCurrentMonitor.SelectedItem;
}
_capturer.Run();
btnRecord.Text = "Stop";
tabControl1.Enabled = false;
lblStatus.Text = "Running";
_captureStarted = true;
timer1.Start();
_isPaused = false;
btnPause.Enabled = true;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btnAddTextOverlay_Click(object sender, EventArgs e)
{
try
{
frmNewOverlay frm = new frmNewOverlay(true);
if (frm.ShowDialog() == DialogResult.OK)
{
TextOverlay textOverlay = frm.GetOverlay() as TextOverlay;
if (_capturer.IsRunning)
{
//_capturer.AddTextOverlay(overlay.Left, overlay.Top, overlay.Text, overlay.Font.Name, (int)overlay.Font.Size,
// overlay.Font.Bold, overlay.Font.Italic, overlay.Font.Underline, (uint)ColorTranslator.ToOle(overlay.Color));
_capturer.AddTextOverlayWithBackground2(textOverlay.Left, textOverlay.Top, textOverlay.Text, textOverlay.Font.Name,
(int)textOverlay.Font.Size, textOverlay.Font.Bold, textOverlay.Font.Italic,
textOverlay.Font.Underline,
textOverlay.Color.R, textOverlay.Color.G, textOverlay.Color.B, textOverlay.Color.A,
textOverlay.BackColor.R, textOverlay.BackColor.G, textOverlay.BackColor.B, textOverlay.BackColor.A);
}
ListViewItem item = new ListViewItem();
item.Text = textOverlay.ToString();
item.Tag = textOverlay;
lstOverlays.Items.Add(item);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btnAddImageOverlay_Click(object sender, EventArgs e)
{
try
{
frmNewOverlay frm = new frmNewOverlay(false);
if (frm.ShowDialog() == DialogResult.OK)
{
ImageOverlay overlay = frm.GetOverlay() as ImageOverlay;
if (_capturer.IsRunning)
{
_capturer.AddImageOverlay(overlay.Left, overlay.Top, overlay.FileName);
}
ListViewItem item = new ListViewItem();
item.Text = overlay.ToString();
item.Tag = overlay;
lstOverlays.Items.Add(item);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btnRemoveOverlay_Click(object sender, EventArgs e)
{
pnlCurrentOverlay.Controls.Clear();
if (lstOverlays.SelectedItems.Count > 0)
{
if (_capturer.IsRunning)
{
_capturer.RemoveOverlay(lstOverlays.Items.IndexOf(lstOverlays.SelectedItems[0]));
}
lstOverlays.Items.Remove(lstOverlays.SelectedItems[0]);
}
}
private void lstOverlays_SelectedIndexChanged(object sender, EventArgs e)
{
pnlCurrentOverlay.Controls.Clear();
if(lstOverlays.SelectedItems.Count > 0)
{
Overlay overlay = lstOverlays.SelectedItems[0].Tag as Overlay;
if (overlay is TextOverlay)
{
ctrlTextOverlay ctrl = new ctrlTextOverlay(overlay as TextOverlay, lstOverlays.Items.IndexOf(lstOverlays.SelectedItems[0]), _capturer);
ctrl.Dock = DockStyle.Fill;
pnlCurrentOverlay.Controls.Add(ctrl);
}
else if (overlay is ImageOverlay)
{
ctrlImageOverlay ctrl = new ctrlImageOverlay(overlay as ImageOverlay, lstOverlays.Items.IndexOf(lstOverlays.SelectedItems[0]), _capturer);
ctrl.Dock = DockStyle.Fill;
pnlCurrentOverlay.Controls.Add(ctrl);
}
}
}
private void cmbMotionDetection_SelectedIndexChanged(object sender, EventArgs e)
{
RecordingModeType rmt = (RecordingModeType)cmbMotionDetection.SelectedItem;
bool enabled = rmt != RecordingModeType.rmtMonitor && rmt != RecordingModeType.rmtRecord;
nmMotionInterval.Enabled = enabled;
nmMotionSensitivity.Enabled = enabled;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (!_isPaused)
{
lblStatus.Text = _capturer.IsRunning ? "Running" : "Stopped";
}
else
{
lblStatus.Text = "Paused";
}
if (_captureStarted && !_capturer.IsRunning && !_isPaused)
{
lblStatus.Text = "Restarting capturer...";
System.Runtime.InteropServices.Marshal.ReleaseComObject(_capturer);
_capturer = null;
InitCapturer();
lstOverlays.Items.Clear();
btnRecord.Text = "Record";
tabControl1.Enabled = true;
lblStatus.Text = "Stopped";
timer1.Stop();
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (_capturer.IsRunning)
{
_capturer.Stop();
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(_capturer);
_capturer = null;
}
private void btnPause_Click(object sender, EventArgs e)
{
if (_capturer.IsRunning)
{
_capturer.Pause();
btnPause.Enabled = false;
btnRecord.Text = "Run";
_isPaused = true;
}
}
private void HandleMonitors()
{
txtMonitorCount.Text = _capturer.MonitorCount.ToString();
txtMonitorLeft.Text = _capturer.MonitorLeft.ToString();
txtMonitorTop.Text = _capturer.MonitorTop.ToString();
txtMonitorWidth.Text = _capturer.MonitorWidth.ToString();
txtMonitorHeight.Text = _capturer.MonitorHeight.ToString();
}
private void cmbCurrentMonitor_SelectedIndexChanged(object sender, EventArgs e)
{
if (_capturer != null)
{
_capturer.MonitorIndex = cmbCurrentMonitor.SelectedIndex - 1;
HandleMonitors();
}
}
private void btnPlay_Click(object sender, EventArgs e)
{
if (System.IO.File.Exists(txtOutputFile.Text.Trim()))
{
System.Diagnostics.Process.Start(txtOutputFile.Text.Trim());
}
}
}
}
frmNewOverlay.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace ScreenCapturingClient
{
public partial class frmNewOverlay : Form
{
public frmNewOverlay(bool textOverlay)
{
InitializeComponent();
UserControl ctrl = null;
if (textOverlay)
{
ctrl = new ctrlTextOverlay();
}
else
{
ctrl = new ctrlImageOverlay();
}
ctrl.Dock = DockStyle.Fill;
panel1.Controls.Add(ctrl);
}
public Overlay GetOverlay()
{
if (panel1.Controls.Count > 0)
{
if (panel1.Controls[0] is ctrlTextOverlay)
{
return ((ctrlTextOverlay)panel1.Controls[0]).GetTextOverlay();
}
else if (panel1.Controls[0] is ctrlImageOverlay)
{
return ((ctrlImageOverlay)panel1.Controls[0]).GetImageOverlay();
}
}
return null;
}
}
}
Overlay.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace ScreenCapturingClient
{
public class Overlay
{
int _left = 0;
int _top = 0;
bool _visible = true;
public int Left { get{return _left;}set{_left = value;}}
public int Top { get { return _top; } set { _top = value; } }
public bool Visible { get { return _visible; } set { _visible = value; } }
}
public class TextOverlay : Overlay
{
string _text = string.Empty;
Font _font = new Font("Arial", 10f);
Color _color = Color.Red;
Color _backColor = Color.Transparent;
public string Text { get { return _text; } set { _text = value; } }
public Font Font { get { return _font; } set { _font = value; } }
public Color Color { get { return _color; } set { _color = value; } }
public Color BackColor { get { return _backColor; } set { _backColor = value; } }
public override string ToString()
{
return string.Format("Text Overlay. Location: {0}, Text: {1}, Font: {2}", new Point(Left, Top), Text, Font);
}
}
public class ImageOverlay : Overlay
{
string _fileName = string.Empty;
public string FileName { get { return _fileName; } set { _fileName = value; } }
public override string ToString()
{
return string.Format("Image Overlay. Location: {0}, File Name: {1}", new Point(Left, Top), FileName);
}
}
}
Program.cs
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace ScreenCapturingClient
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}