private void Handle(IPacket data) { switch (data) { case PacketDisconnect packet: MessageBox.Show(packet.Reason); Disconnect(); break; case PacketScreen packet: MainWindow.Instance.DrawFullScreen(packet.Width, packet.Height, packet.Format, packet.Data); break; case PacketScreenChunk packet: MainWindow.Instance.DrawScreenChunk(new ByteBuf(packet.Data)); break; case PacketServerControl packet: MainWindow.Instance.ServerControl = packet.Control; break; case PacketCursorType packet: MainWindow.Instance.CursorValue = packet.Cursor; MainWindow.Instance.Invoke(() => LowHelper.SetCursor(packet.Cursor)); break; case PacketClipboard packet: MainWindow.Instance.ClipboardHelper.ClipboardChunkReceived(packet.Id, packet.Type, packet.Data); break; } }
public ClipboardManager(Visual window) { _source = PresentationSource.FromVisual(window) as HwndSource; _source !.AddHook(WndProc); // handle = new WindowInteropHelper(window).Handle; LowHelper.AddClipboardFormatListener(_source.Handle); // _nextClipboardViewer = LowHelper.SetClipboardViewer(_source.Handle); }
public void Close() { LowHelper.RemoveClipboardFormatListener(_source.Handle); // LowHelper.ChangeClipboardChain(_source.Handle, _nextClipboardViewer); _source.RemoveHook(WndProc); }