/// <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(); }
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')); }