Ejemplo n.º 1
0
        private void _Desktop_Service_ScreenUpdateEvent(byte[] data, Rectangle r)
        {
            var ms = new Tcp_Message((int)Desktop_Sharing_Shared.Message_Types.UPDATE_REGION);

            ms.Add_Block(BitConverter.GetBytes(r.Top));
            ms.Add_Block(BitConverter.GetBytes(r.Left));
            ms.Add_Block(BitConverter.GetBytes(r.Height));
            ms.Add_Block(BitConverter.GetBytes(r.Width));


            byte[] imgbytes;
            using (var msout = new MemoryStream())
            {
                unsafe
                {
                    fixed(byte *datb = data)
                    {
                        using (Bitmap image = new Bitmap(r.Width, r.Height, r.Width * 4, PixelFormat.Format32bppRgb, new IntPtr(datb)))
                        {
                            image.Save(msout, ImageFormat.Png);
                            imgbytes = msout.ToArray();
                        }
                    }
                }
            }
            ms.Add_Block(imgbytes);
            _Server.Send(ms);
        }
Ejemplo n.º 2
0
        void _Server_NewClientEvent(Secure_Stream client)
        {
            if (!_Desktop_Service.Capturing)
            {
                _Desktop_Service.Capturing = true;
                Thread.Sleep(200);//make sure to sleep long enough for the background service to start up and get an image if needed.
            }
            var ms  = new Tcp_Message((int)Desktop_Sharing_Shared.Message_Types.RESOLUTION_CHANGE);
            var tmp = _Desktop_Service._LastImage;//make sure to get a copy

            ms.Add_Block(BitConverter.GetBytes(tmp.Dimensions.Height));
            ms.Add_Block(BitConverter.GetBytes(tmp.Dimensions.Width));

            byte[] imgbytes;
            using (var msout = new MemoryStream())
            {
                unsafe
                {
                    fixed(byte *datb = tmp.Data)
                    {
                        using (Bitmap image = new Bitmap(tmp.Dimensions.Width, tmp.Dimensions.Height, tmp.Dimensions.Width * 4, PixelFormat.Format32bppRgb, new IntPtr(datb)))
                        {
                            image.Save(msout, ImageFormat.Png);
                            imgbytes = msout.ToArray();
                        }
                    }
                }
            }
            ms.Add_Block(imgbytes);
            client.Encrypt_And_Send(ms);
        }
Ejemplo n.º 3
0
        void _Desktop_Service_MousePositionChangedEvent(Point tl)
        {
            var ms = new Tcp_Message((int)Desktop_Sharing_Shared.Message_Types.MOUSE_POSITION_EVENT);

            ms.Add_Block(BitConverter.GetBytes(tl.Y));
            ms.Add_Block(BitConverter.GetBytes(tl.X));
            _Server.Send(ms);
        }
Ejemplo n.º 4
0
        void _Desktop_Service_MouseImageChangedEvent(Point tl, byte[] data)
        {
            var ms = new Tcp_Message((int)Desktop_Sharing_Shared.Message_Types.MOUSE_IMAGE_EVENT);

            ms.Add_Block(BitConverter.GetBytes(tl.Y));
            ms.Add_Block(BitConverter.GetBytes(tl.X));
            ms.Add_Block(data);
            _Server.Send(ms);
        }
Ejemplo n.º 5
0
 private void _server_ReceiveEvent(Tcp_Message ms)
 {
     try
     {
         if (ms.Type == (int)Desktop_Sharing_Shared.Message_Types.MOUSE_EVENT)
         {
             int width  = Screen.AllScreens.Sum(a => a.Bounds.Width);
             int height = Screen.AllScreens.Max(a => a.Bounds.Height);
             _Desktop_Service.MouseEvent(new Desktop_Sharing_Shared.Mouse.MouseEventStruct
             {
                 msg         = (Desktop_Sharing_Shared.Mouse.PInvoke.WinFormMouseEventFlags)BitConverter.ToInt32(ms.Blocks[1], 0),
                 wheel_delta = BitConverter.ToInt32(ms.Blocks[4], 0),
                 x           = (int)((double)BitConverter.ToInt32(ms.Blocks[2], 0) / (double)width * (double)65535),
                 y           = (int)((double)BitConverter.ToInt32(ms.Blocks[3], 0) / (double)height * (double)65535)
             });
         }
         else if (ms.Type == (int)Desktop_Sharing_Shared.Message_Types.KEY_EVENT)
         {
             _Desktop_Service.KeyEvent(new Desktop_Sharing_Shared.Keyboard.KeyboardEventStruct
             {
                 bVk = BitConverter.ToInt32(ms.Blocks[1], 0),
                 s   = (Desktop_Sharing_Shared.Keyboard.PInvoke.PInvoke_KeyState)BitConverter.ToInt32(ms.Blocks[2], 0)
             });
         }
         else if (ms.Type == (int)Desktop_Sharing_Shared.Message_Types.FILE)
         {
             _Desktop_Service.FileEvent(Desktop_Sharing_Shared.Utilities.Format.GetString(ms.Blocks[1]), ms.Blocks[2]);
         }
         else if (ms.Type == (int)Desktop_Sharing_Shared.Message_Types.FOLDER)
         {
             _Desktop_Service.FolderEvent(Desktop_Sharing_Shared.Utilities.Format.GetString(ms.Blocks[1]));
         }
     } catch (Exception e)
     {
         Debug.WriteLine(e.Message);
     }
 }