示例#1
0
        /// <summary>
        ///     Test monitoring the clipboard
        /// </summary>
        /// <returns></returns>
        //[WpfFact]
        public async Task TestClipboardMonitor_WaitForCopy()
        {
            var tcs          = new TaskCompletionSource <bool>();
            var subscription = ClipboardMonitor.OnUpdate.Subscribe(clipboard =>
            {
                Log.Debug().WriteLine("Formats {0}", string.Join(",", clipboard.Formats));
                Log.Debug().WriteLine("Owner {0}", clipboard.OwnerHandle);
                Log.Debug().WriteLine("Sequence {0}", clipboard.Id);

                if (clipboard.Formats.Contains("PNG"))
                {
                    using (ClipboardNative.Lock())
                    {
                        var stream = ClipboardNative.GetAsStream("PNG");
                        using (var fileStream = File.Create(@"D:\test.png"))
                        {
                            stream.CopyTo(fileStream);
                        }
                    }
                }
                tcs.TrySetResult(true);
            });

            await tcs.Task;

            subscription.Dispose();
        }
示例#2
0
        public async Task TestClipboardStore_MemoryStream()
        {
            const string testString = "Dapplo.Windows.Tests.ClipboardTests";
            var          testStream = new MemoryStream();
            var          bytes      = Encoding.Unicode.GetBytes(testString + "\0");

            Assert.Equal(testString, Encoding.Unicode.GetString(bytes).TrimEnd('\0'));
            testStream.Write(bytes, 0, bytes.Length);

            Assert.Equal(testString, Encoding.Unicode.GetString(testStream.GetBuffer(), 0, (int)testStream.Length).TrimEnd('\0'));

            MemoryStream resultStream;

            using (ClipboardNative.Lock())
            {
                ClipboardNative.Clear();
                ClipboardNative.SetAsStream("CF_UNICODETEXT", testStream);
            }
            await Task.Delay(1000);

            using (ClipboardNative.Lock())
            {
                resultStream = ClipboardNative.GetAsStream("CF_UNICODETEXT");
            }
            Assert.Equal(testString, Encoding.Unicode.GetString(resultStream.GetBuffer(), 0, (int)resultStream.Length).TrimEnd('\0'));
        }