Exemplo n.º 1
0
        unsafe uint Win32Com.IDataObject.GetDataHere(FORMATETC *format, Interop.STGMEDIUM *medium)
        {
            if (_wrapped is Win32Com.IDataObject ole)
            {
                return(ole.GetDataHere(format, medium));
            }

            if (medium->tymed != TYMED.TYMED_HGLOBAL || !format->tymed.HasAllFlags(TYMED.TYMED_HGLOBAL))
            {
                return(DV_E_TYMED);
            }

            if (format->dwAspect != DVASPECT.DVASPECT_CONTENT)
            {
                return(DV_E_DVASPECT);
            }

            string fmt = ClipboardFormats.GetFormat(format->cfFormat);

            if (string.IsNullOrEmpty(fmt) || !_wrapped.Contains(fmt))
            {
                return(DV_E_FORMATETC);
            }

            if (medium->unionmember == IntPtr.Zero)
            {
                return(STG_E_MEDIUMFULL);
            }

            return(WriteDataToHGlobal(fmt, ref medium->unionmember));
        }
Exemplo n.º 2
0
 unsafe uint Win32Com.IDataObject.SetData(FORMATETC *pformatetc, Interop.STGMEDIUM *pmedium, int fRelease)
 {
     if (_wrapped is Win32Com.IDataObject ole)
     {
         return(ole.SetData(pformatetc, pmedium, fRelease));
     }
     return((uint)UnmanagedMethods.HRESULT.E_NOTIMPL);
 }