Ejemplo n.º 1
0
        private static bool WinSetData(WinClipboardFormat format, byte[] data)
        {
            if (!OpenClipboard(IntPtr.Zero))
            {
                return(false);
            }
            EmptyClipboard();

            IntPtr hgData = Marshal.AllocHGlobal(data.Length);

            if (hgData == IntPtr.Zero)
            {
                return(false);
            }

            IntPtr ptData = GlobalLock(hgData);

            if (ptData == IntPtr.Zero)
            {
                Marshal.FreeHGlobal(hgData);
                return(false);
            }
            Marshal.Copy(data, 0, ptData, data.Length);
            GlobalUnlock(hgData);

            if (SetClipboardData((uint)format, ptData) == IntPtr.Zero)
            {
                Marshal.FreeHGlobal(hgData);
                return(false);
            }

            CloseClipboard();

            return(true);
        }
Ejemplo n.º 2
0
        private static byte[] WinGetData(WinClipboardFormat format)
        {
            if (!IsClipboardFormatAvailable((uint)format))
            {
                return(null);
            }

            if (!OpenClipboard(IntPtr.Zero))
            {
                return(null);
            }

            IntPtr hgData = GetClipboardData((uint)format);

            if (hgData == IntPtr.Zero)
            {
                return(null);
            }

            IntPtr ptData = GlobalLock(hgData);

            if (ptData == IntPtr.Zero)
            {
                return(null);
            }

            int size = GlobalSize(hgData);

            byte[] data = new byte[size];

            Marshal.Copy(ptData, data, 0, size);

            GlobalUnlock(hgData);
            CloseClipboard();

            return(data);
        }