Ejemplo n.º 1
0
        /// <summary>
        /// Set the clipboard content from a list of identifiers.
        /// </summary>
        /// <param name="identifiers">The list of <see cref="DataIdentifier"/> that specify which data must be added to the clipboard.</param>
        internal void SetClipboard(IEnumerable <DataIdentifier> identifiers)
        {
            Requires.NotNull(identifiers, nameof(identifiers));
            Pause();
            var dataService = ServiceLocator.GetService <DataService>();

            using (var clipboardWriter = new ClipboardWriter())
            {
                foreach (var dataIdentifier in identifiers)
                {
                    ReadFileToClipboardData(clipboardWriter, dataIdentifier, dataService.ClipboardDataPath);
                }

                clipboardWriter.Flush();
            }
        }
Ejemplo n.º 2
0
        public void ClipboardWriterAndReader()
        {
            using (var clipboardWriter = new ClipboardWriter())
            {
                var value = new MemoryStream(new byte[] { 72, 101, 108, 108, 111 }); // "Hello" in binary

                clipboardWriter.AddData("ASCIITextTest", value);

                clipboardWriter.Flush();
            }

            var dataFromClipboard = (MemoryStream)System.Windows.Clipboard.GetData("ASCIITextTest");

            Assert.IsTrue(dataFromClipboard.ToArray().SequenceEqual(new byte[] { 72, 101, 108, 108, 111 }));

            var dataFromClipboard2 = new MemoryStream();
            var dataObject         = (System.Windows.DataObject)System.Windows.Clipboard.GetDataObject();

            using (var clipboardReader = new ClipboardReader(dataObject))
            {
                Assert.IsFalse(clipboardReader.IsReadable);
                Assert.IsFalse(clipboardReader.CanReadNextBlock());

                foreach (var format in dataObject.GetFormats())
                {
                    clipboardReader.BeginRead(format);
                    Assert.IsTrue(clipboardReader.IsReadable);
                    Assert.IsTrue(clipboardReader.CanReadNextBlock());

                    while (clipboardReader.CanReadNextBlock())
                    {
                        var buffer = clipboardReader.ReadNextBlock();
                        dataFromClipboard2.Write(buffer, 0, buffer.Length);
                    }

                    clipboardReader.EndRead();
                }
            }

            Assert.IsTrue(dataFromClipboard2.ToArray().SequenceEqual(new byte[] { 72, 101, 108, 108, 111 }));
        }