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); }
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); }
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); }
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); }
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); } }