private void ScreenCastRequested(object sender, ScreenCastRequest screenCastRequest) { App.Current.Dispatcher.Invoke(() => { var result = MessageBox.Show($"You've received a connection request from {screenCastRequest.RequesterName}. Accept?", "Connection Request", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.Yes) { Task.Run(async() => { ICapturer capturer; try { if (Conductor.Viewers.Count == 0) { capturer = new DXCapture(); } else { capturer = new BitBltCapture(); } } catch (Exception ex) { Logger.Write(ex); capturer = new BitBltCapture(); } await Conductor.CasterSocket.SendCursorChange(CursorIconWatcher.GetCurrentCursor(), new List <string>() { screenCastRequest.ViewerID }); ScreenCaster.BeginScreenCasting(screenCastRequest.ViewerID, screenCastRequest.RequesterName, capturer, Conductor); }); } }); }
public ScreenCaptureMode() { InitializeComponent(); name = "Screen Capture"; capture_dx = new DXCapture(0, new SetIntDelegate(updateCfpslabel)); }
private static async void ScreenCastInitiated(object sender, ScreenCastRequest screenCastRequest) { ICapturer capturer; try { if (Conductor.Viewers.Count == 0) { capturer = new DXCapture(); } else { capturer = new BitBltCapture(); } } catch (Exception ex) { Logger.Write(ex); capturer = new BitBltCapture(); } await Conductor.CasterSocket.SendCursorChange(CursorIconWatcher.GetCurrentCursor(), new List <string>() { screenCastRequest.ViewerID }); ScreenCaster.BeginScreenCasting(screenCastRequest.ViewerID, screenCastRequest.RequesterName, capturer, Conductor); BeginAudioCapture(); }
public static void BuildServices() { var serviceCollection = new ServiceCollection(); serviceCollection.AddLogging(builder => { builder.AddConsole().AddEventLog(); }); serviceCollection.AddSingleton <CursorIconWatcher>(); serviceCollection.AddSingleton <IScreenCaster, WinScreenCaster>(); serviceCollection.AddSingleton <IKeyboardMouseInput, WinInput>(); serviceCollection.AddSingleton <IClipboardService, WinClipboardService>(); serviceCollection.AddSingleton <IAudioCapturer, WinAudioCapturer>(); serviceCollection.AddSingleton <IRCSocket, RCSocket>(); serviceCollection.AddTransient <ICapturer>(provider => { try { var dxCapture = new DXCapture(); if (dxCapture.GetScreenCount() == Screen.AllScreens.Length) { return(dxCapture); } Logger.Write("DX screen count doesn't match. Using CPU capturer instead."); dxCapture.Dispose(); return(new BitBltCapture()); } catch { return(new BitBltCapture()); } }); ServiceContainer.Instance = serviceCollection.BuildServiceProvider(); }
private static ICapturer GetCapturer() { ICapturer capturer; try { if (Conductor.Current.Viewers.Count == 0) { capturer = new DXCapture(); } else { capturer = new BitBltCapture(); } } catch (Exception ex) { Logger.Write(ex); capturer = new BitBltCapture(); } return(capturer); }