Exemple #1
0
        private static void OnMessageReceived(object sender, MessageEventArgs e)
        {
            if (e.IsPing)
            {
                Console.WriteLine("We were pinged");
            }
            else if (e.IsBinary)
            {
                Console.WriteLine("Got binary response from websocket");
                var response = BytesResponsePayload.Deserialize(e.RawData);
                Console.WriteLine($"Success: {response.IsSuccess}");
                Console.WriteLine($"Metadata: {response.Metadata.Serialize()}");

                if (response.Metadata.Source == typeof(DisplayScreen))
                {
                    using var ms = new MemoryStream(response.Payload);
                    var displayCapture = Image.FromStream(ms);

                    DrawImage.ConsoleWriteImage((Bitmap)displayCapture);
                }
                else
                {
                    Console.WriteLine($"Raw Payload: {GetPrettyByteArrayString(response.Payload)}");
                }
            }
            else if (e.IsText)
            {
                Console.WriteLine("Got text response from websocket");
                Console.WriteLine($"Response: {e.Data}");
            }
        }
Exemple #2
0
        public IResponsePayload <byte[]> Execute(Request request)
        {
            var psi = new ProcessStartInfo("shutdown", "/s /t 0");

            psi.CreateNoWindow  = true;
            psi.UseShellExecute = false;
            var process = Process.Start(psi);

            return(process.ExitCode == 0 ?
                   BytesResponsePayload.NoPayloadSuccess(new ResponseMetadata(GetType())) :
                   BytesResponsePayload.NoPayloadFailure(new ResponseMetadata(GetType())));
        }
Exemple #3
0
        public RemoteControlPage()
        {
            InitializeComponent();
            //ScreenCapture.BitmapOptimizations = true;
            //ScreenCapture.DownsampleToViewSize = true;
            //ScreenCapture.Finish += ScreenCapture_Finish;
            //ScreenCapture.Source = new StreamImageSource()
            //{
            //    Stream = async (token) => await Task.FromResult<Stream>(new MemoryStream(imageBytes))
            //};

            canvasView = new SKCanvasView();
            canvasView.PaintSurface += OnCanvasViewPaintSurface;
            Content = canvasView;

            ClientConnection.Instance.Connection.OnMessageReceived += async(sender, e) =>
            {
                await Task.Run(() =>
                {
                    Debug.WriteLine("Got message");
                    if (e.IsBinary)
                    {
                        var response = BytesResponsePayload.Deserialize(e.RawData);

                        if (response.Metadata.Source == typeof(DisplayScreen))
                        {
                            // TODO - This won't work. High GC overhead and serious latency. Take a look at SkiaSharp!
                            //ScreenCapture.Source = ImageSource.FromStream(() => new MemoryStream(response.Payload));
                            //ScreenCapture.ReloadImage();
                            //viewModel.UpdateImage(response.Payload);
                            skBitmap = SKBitmap.Decode(response.Payload);
                            canvasView.InvalidateSurface();
                        }
                    }
                });
            };

            //Commands.ExecuteRemotely(ClientConnection.Instance.Connection, new Request(nameof(DisplayScreen)));
            cancellationToken = new CancellationToken();
            Task.Run(async() =>
            {
                while (!cancellationToken.IsCancellationRequested)
                {
                    Commands.ExecuteRemotely(ClientConnection.Instance.Connection, new Request(nameof(DisplayScreen)));
                    await Task.Delay(16);
                }
            });
        }
        public IResponsePayload <byte[]> Execute(Request request)
        {
            if (!float.TryParse(request.Parameters[0], out float volumeChange))
            {
                return(BytesResponsePayload.NoPayloadFailure(new ResponseMetadata(GetType())));
            }

            if (defaultPlaybackDevice == null)
            {
                var enumerator = new MMDeviceEnumerator();
                defaultPlaybackDevice = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
            }

            defaultPlaybackDevice.AudioEndpointVolume.MasterVolumeLevelScalar = volumeChange;
            return(BytesResponsePayload.NoPayloadSuccess(new ResponseMetadata(GetType())));
        }
Exemple #5
0
 public IResponsePayload <byte[]> Execute(Request request)
 {
     audio.PlayStop();
     return(BytesResponsePayload.NoPayloadSuccess(new ResponseMetadata(GetType())));
 }
Exemple #6
0
 public IResponsePayload <byte[]> Execute(Request request)
 {
     Console.WriteLine("Hello World!");
     return(BytesResponsePayload.PayloadSuccess(Encoding.UTF8.GetBytes("Hello World"), new ResponseMetadata(GetType())));
 }