private void SetParameters() { snagVideo.Input = SNAGITLib.snagVideoInput.sviRegion; snagVideo.InputRegionOptions.SelectionMethod = snagRegionSelectionMethod.srsmFixed; float dpiX, dpiY; using (Graphics graphics = Graphics.FromHwnd(IntPtr.Zero)) { dpiX = 96f / graphics.DpiX; dpiY = 96f / graphics.DpiY; }; snagVideo.InputRegionOptions.Height = Convert.ToInt16(Screen.PrimaryScreen.WorkingArea.Height * dpiY); snagVideo.InputRegionOptions.Width = Convert.ToInt16(Screen.PrimaryScreen.WorkingArea.Width * dpiX); snagVideo.InputRegionOptions.StartX = 0; snagVideo.InputRegionOptions.StartY = 0; snagVideo.InputRegionOptions.UseStartPosition = true; snagVideo.UseMagnifierWindow = false; snagVideo.IncludeCursor = false; snagVideo.EnablePreviewWindow = false; snagVideo.HideRecordingUI = true; SNAGITLib.MP4FormatClass mp4Format = new SNAGITLib.MP4FormatClass() { DisableMOOVAtomOptimization = false }; snagVideo.VideoFormat = mp4Format; snagVideo.OutputVideoFile.FileNamingMethod = snagOuputFileNamingMethod.sofnmAuto; snagVideo.OutputVideoFile.Directory = Environment.CurrentDirectory; snagVideo.OutputVideoFile.Filename = "SNAG-CAPTURE"; snagVideo.OutputVideoFile.AutoFilePrefix = "SNAG-CAPTURE"; snagVideo.OutputVideoFile.AutoNumPrefixDigits = 10; }
//Returns false if input validation fails. private bool SetInputOptions() { //Selection Input options if ( snagVideo.Input == snagVideoInput.sviRegion && RegionHeight.Visible ) { //Fixed Region snagVideo.InputRegionOptions.SelectionMethod = snagRegionSelectionMethod.srsmFixed; snagVideo.InputRegionOptions.Height = Convert.ToInt16( RegionHeight.Text ); snagVideo.InputRegionOptions.Width = Convert.ToInt16( RegionWidth.Text ); snagVideo.InputRegionOptions.StartX = 0; snagVideo.InputRegionOptions.StartY = 0; snagVideo.InputRegionOptions.UseStartPosition = UseStartPos.Checked; if ( UseStartPos.Checked ) { snagVideo.InputRegionOptions.StartX = Convert.ToInt16( StartXPos.Text ); snagVideo.InputRegionOptions.StartY = Convert.ToInt16( StartYPos.Text ); } } else if ( snagVideo.Input == snagVideoInput.sviWindow && XPos.Visible ) { //Window based on position snagVideo.InputWindowOptions.XPos = Convert.ToInt16( XPos.Text ); snagVideo.InputWindowOptions.YPos = Convert.ToInt16( YPos.Text ); snagVideo.InputWindowOptions.SelectionMethod = snagWindowSelectionMethod.swsmPoint; } else if ( snagVideo.Input == snagVideoInput.sviWindow && WinHandle.Visible ) { //Window base on a handle Int32 nHwnd = 0; try { nHwnd = Convert.ToInt32( WinHandle.Text ); } catch { //Must be in hexadecimal... try { String strHandle = WinHandle.Text.ToLower(); if ( strHandle.IndexOf( 'x' ) > 0 ) {//Strip off the 0X prefix if it is present strHandle = strHandle.Substring( strHandle.IndexOf( 'x' ) + 1 ); } nHwnd = Int32.Parse( strHandle, System.Globalization.NumberStyles.HexNumber ); } catch ( Exception e ) { String strErr = "Error setting input options.\nException: " + e.Message; MessageBox.Show( strErr, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error ); return false; } } snagVideo.InputWindowOptions.Handle = Convert.ToInt32( nHwnd ); snagVideo.InputWindowOptions.SelectionMethod = snagWindowSelectionMethod.swsmHandle; } //Misc options snagVideo.UseMagnifierWindow = ShowSelectionMagnifier.Checked; snagVideo.IncludeCursor = IncludeCursor.Checked; snagVideo.EnablePreviewWindow = ChkPreviewWindow.Checked; snagVideo.HideRecordingUI = chkBxHideSnagitRecorderUI.Checked; if ( AudioDevice.SelectedItem != null ) { snagVideo.AudioDevice = ((AudioDevice)AudioDevice.SelectedItem).AudioId; } //Perform Moov atom optimization on the MP4 file? //Note: The optimization is done by default and you do not even need // to specify the format unless you want to disable the option. SNAGITLib.MP4FormatClass mp4Format = new SNAGITLib.MP4FormatClass(); mp4Format.DisableMOOVAtomOptimization = DisableMoovOptimization.Checked; snagVideo.VideoFormat = mp4Format; return true; //succeeded }