public string GetText()
        {
            var windowHandle = _clyde.GetNativeWindowHandle();

            if (!OpenClipboard(windowHandle))
            {
                throw new Win32Exception(Marshal.GetLastWin32Error());
            }

            try
            {
                if (IsClipboardFormatAvailable(CF_UNICODETEXT))
                {
                    var dataHandle = GetClipboardData(CF_UNICODETEXT);
                    if (dataHandle == IntPtr.Zero)
                    {
                        throw new Win32Exception(Marshal.GetLastWin32Error());
                    }

                    var ptr = GlobalLock(dataHandle);

                    if (ptr == IntPtr.Zero)
                    {
                        throw new Win32Exception(Marshal.GetLastWin32Error());
                    }

                    try
                    {
                        var str = Marshal.PtrToStringUni(ptr);
                        return(str);
                    }
                    finally
                    {
                        GlobalUnlock(dataHandle);
                    }
                }

                if (IsClipboardFormatAvailable(CF_TEXT))
                {
                    var dataHandle = GetClipboardData(CF_TEXT);
                    if (dataHandle == IntPtr.Zero)
                    {
                        throw new Win32Exception(Marshal.GetLastWin32Error());
                    }

                    var ptr = GlobalLock(dataHandle);

                    if (ptr == IntPtr.Zero)
                    {
                        throw new Win32Exception(Marshal.GetLastWin32Error());
                    }

                    try
                    {
                        var str = Marshal.PtrToStringAnsi(ptr);
                        return(str);
                    }
                    finally
                    {
                        GlobalUnlock(dataHandle);
                    }
                }

                // Clipboard data isn't available as string, guess we just say it's empty.
                return("");
            }
            finally
            {
                CloseClipboard();
            }
        }