private void btn_start_Click(object sender, EventArgs e) { if (btn_start.Text == "开始") { if (m_scrRecorder == null) { if (rdbtn_hwnd.Checked && m_hWnd != IntPtr.Zero) { m_scrRecorder = new ScreenRecorder(m_hWnd, (int)nud_sleep.Value); } else if (rdbtn_rect.Checked && m_rect != Rectangle.Empty) { m_scrRecorder = new ScreenRecorder(m_rect, (int)nud_sleep.Value); } else { MessageBox.Show("确保对应的录制方式 有选择数据"); return; } } m_scrRecorder.DrawCursor = chk_drawMouse.Checked; m_scrRecorder.Start(); btn_start.Text = "停止"; rdbtn_hwnd.Enabled = rdbtn_rect.Enabled = false; nud_sleep.Enabled = false; btn_reset.Enabled = btn_preview.Enabled = false; lb_chose.Enabled = pic_chose.Enabled = true; } else { m_scrRecorder.Stop(); btn_start.Text = "开始"; btn_reset.Enabled = btn_preview.Enabled = true; } }
public void Start_WhenDisposed_Throws() { var grabber = new ScreenGrabber(new CaptureParameters()); var video = new FlashScreenVideo(new FlashScreenVideoParameters(grabber.ScreenshotWidth, grabber.ScreenshotHeight, 5)); var recorder = new ScreenRecorder(grabber, video); recorder.Dispose(); Assert.Throws <ObjectDisposedException>(() => recorder.Start()); }
// // Main procedure // static void Main(string[] args) { Console.CancelKeyPress += (sender, a) => { _exitingEvent.Set(); a.Cancel = true; }; SetConsoleCtrlHandler(ConsoleCtrlHandler, true); ScreenRecorder recorder = new ScreenRecorder(); recorder.Start(); ScreenCaptureController.Recorder = recorder; // this is the web application stack WebApp.Start(ApplicationUrl, (builder) => { var config = new HttpConfiguration(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{lastKnownFrame}", defaults: new { lastKnownFrame = RouteParameter.Optional } ); builder.UseWebApi(config); builder.MapSignalR(); builder.UseFileServer(new FileServerOptions() { EnableDirectoryBrowsing = false, RequestPath = new Microsoft.Owin.PathString(@"/js"), FileSystem = new PhysicalFileSystem(StaticScriptsPath) }); builder.UseFileServer(new FileServerOptions() { EnableDirectoryBrowsing = true, FileSystem = new PhysicalFileSystem(StaticFilesPath) }); }); // wait for the user to exit the application Console.Write("Press CTRL + C to exit"); _exitingEvent.WaitOne(); _exitEvent.Set(); }
public void Start_CapturesVideoUntilStopped() { var grabber = new ScreenGrabber(new CaptureParameters() { Zoom = 0.25 }); var video = new FlashScreenVideo(new FlashScreenVideoParameters(grabber.ScreenshotWidth, grabber.ScreenshotHeight, 5)); using (var recorder = new ScreenRecorder(grabber, video)) { recorder.Start(); Thread.Sleep(2000); recorder.Stop(); TestLog.EmbedVideo("Video", recorder.Video); } }
/// <summary> /// Starts recording a screen capture video of the entire desktop. /// </summary> /// <remarks> /// <para> /// Recording a screen capture video can be very CPU and space intensive particularly /// when running tests on a single-core CPU. We recommend calling /// <see cref="StartRecording(CaptureParameters, double)" /> with /// a <see cref="CaptureParameters.Zoom" /> factor of 0.25 or less and a frame rate /// of no more than 5 to 10 frames per second. /// </para> /// </remarks> /// <param name="parameters">The capture parameters.</param> /// <param name="framesPerSecond">The number of frames per second to capture.</param> /// <returns>The recorder.</returns> /// <exception cref="ArgumentNullException">Thrown if <paramref name="parameters"/> is null.</exception> /// <exception cref="ScreenshotNotAvailableException">Thrown if a screenshot cannot be captured at this time.</exception> public static ScreenRecorder StartRecording(CaptureParameters parameters, double framesPerSecond) { if (parameters == null) { throw new ArgumentNullException("parameters"); } ScreenGrabber.ThrowIfScreenshotNotAvailable(); ScreenGrabber grabber = new ScreenGrabber(parameters); try { FlashScreenVideo video = new FlashScreenVideo(new FlashScreenVideoParameters( grabber.ScreenshotWidth, grabber.ScreenshotHeight, framesPerSecond)); ScreenRecorder recorder = new ScreenRecorder(grabber, video); try { recorder.OverlayManager.AddOverlay(GetOverlayManager().ToOverlay()); recorder.Start(); return(recorder); } catch { recorder.Dispose(); throw; } } catch { grabber.Dispose(); throw; } }
private void cmdStart_Click(object sender, EventArgs e) { cmdStart.Enabled = false; cmdStop.Enabled = true; sr.Start(); }