Ejemplo n.º 1
0
 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);
             });
         }
     });
 }
Ejemplo n.º 2
0
        public ScreenCaptureMode()
        {
            InitializeComponent();
            name = "Screen Capture";

            capture_dx = new DXCapture(0, new SetIntDelegate(updateCfpslabel));
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        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);
        }