public void RegisterClipboardEvent(string Purpose, Action OnClipboardDraw) { ClipboardEventListenerWindow clipboardEventListenerWindow = RegisteredClipboardEventListeners.SingleOrDefault(o => o.ClipboardEvent.Purpose == Purpose); if (clipboardEventListenerWindow == null) { ClipboardEvent clipboardEvent = new ClipboardEvent() { Purpose = Purpose, OnClipboardDraw = OnClipboardDraw }; ClipboardEventListenerWindow window = new ClipboardEventListenerWindow(clipboardEvent); IntPtr windowHandle = window.Handle; bool issuccess = WinApiMethods.AddClipboardFormatListener(windowHandle); if (!issuccess) { Win32Exception ex = new Win32Exception(Marshal.GetLastWin32Error()); throw ex; } else { RegisteredClipboardEventListeners.Add(clipboardEventListenerWindow); } } else { throw new AlreadyMappedException(clipboardEventListenerWindow.ClipboardEvent); } }
public ClipboardEventListenerWindow(ClipboardEvent clipboardEvent) { ClipboardEvent = clipboardEvent; isOnCooldown = false; }
public AlreadyMappedException(ClipboardEvent clipboardEvent) : base(string.Format("Clipboard Event is already Defined for this {0} purpose", clipboardEvent.Purpose)) { }