void IDisposable.Dispose()
            {
                base.Dispose();

                // we may have recicular references to itself
                _baseIOleClientSite = null;

                if (_inner != null)
                {
                    _inner.Dispose();
                    _inner = null;
                }

                if (_unkInnerAggregated != IntPtr.Zero)
                {
                    Marshal.Release(_unkInnerAggregated);
                    _unkInnerAggregated = IntPtr.Zero;
                }

                if (_unkOuter != IntPtr.Zero)
                {
                    Marshal.Release(_unkOuter);
                    _unkOuter = IntPtr.Zero;
                }
            }
Пример #2
0
        private void CallJavaScript(string callFunctionName, params object[] args)
        {
            try
            {
                Type   typeIOleObject = this.GetType().GetInterface("IOleObject", true);
                object oleClientSite  = typeIOleObject.InvokeMember("GetClientSite",
                                                                    BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public,
                                                                    null,
                                                                    this,
                                                                    null);

                IOleClientSite oleClientSite2 = oleClientSite as IOleClientSite;
                IOleContainer  pObj;
                oleClientSite2.GetContainer(out pObj);

                IHTMLDocument pDoc2  = (IHTMLDocument)pObj;
                object        script = pDoc2.Script;

                try
                {
                    script.GetType().InvokeMember(callFunctionName,
                                                  BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public,
                                                  null,
                                                  script,
                                                  args);
                }
                catch
                {
                    LogException(new Exception("1.未实现JS方法:" + callFunctionName + ";2.在调用该方法时发生内部错误"));
                }
            }
            catch { }
        }
Пример #3
0
        private void CheckUIHostRegistration()
        {
            lock (_uiHostRegisteredLock)
            {
                if (testHelp != null)
                {
                    testHelp.StartInfo = this.StartInfo;
                }

                if (isUIHostRegistered || ieInstance == null)
                {
                    return;
                }

                ICustomDoc cDoc   = ieInstance.Document as ICustomDoc;
                IOleObject oleObj = ieInstance.Document as IOleObject;

                if (oleObj != null && cDoc != null)
                {
                    IOleClientSite clientSite = null;
                    oleObj.GetClientSite(ref clientSite);

                    if (cDoc != null)
                    {
                        _browser = new BrowserIEImpl(ieInstance, _mainHWND, _canvasHWND);
                        testHelp = new IETestHelp(clientSite as IDocHostUIHandler, _browser, host);
                        cDoc.SetUIHandler(testHelp);
                        isUIHostRegistered = true;
                    }
                }
            }
        }
Пример #4
0
        public override void RegisterDoc()
        {
            base.RegisterDoc();

            if (registeredUIHandler == false)
            {
                registeredUIHandler = true;

                ICustomDoc cDoc   = this.m_pIWebBrowser2.Document as ICustomDoc;
                IOleObject oleObj = this.m_pIWebBrowser2.Document as IOleObject;

                if (oleObj != null && cDoc != null)
                {
                    IOleClientSite clientSite = null;
                    oleObj.GetClientSite(ref clientSite);

                    if (m_defaultUIHandler == null && clientSite != null)
                    {
                        m_defaultUIHandler = clientSite as IDocHostUIHandler;
                    }
                    if (cDoc != null)
                    {
                        cDoc.SetUIHandler(this);
                    }
                }
            }
        }
Пример #5
0
        /// <summary>
        /// 获取JS变量值
        /// </summary>
        /// <param name="varName"></param>
        /// <returns></returns>
        protected object GetJSvar(string varName)
        {
            if (typeIOleObject == null)
            {
                typeIOleObject = this.GetType().GetInterface("IOleObject", true);
                object tmpOldClientSite = typeIOleObject.InvokeMember("GetClientSite", BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public,
                                                                      null,
                                                                      this,
                                                                      null);

                oleClientSite = tmpOldClientSite as IOleClientSite;
                oleClientSite.GetContainer(out pObj);
            }

            //获取页面的Script集合
            IHTMLDocument pDoc2  = (IHTMLDocument)pObj;
            object        script = pDoc2.Script;

            try
            {
                return(script.GetType().InvokeMember(varName,
                                                     BindingFlags.GetProperty,
                                                     null,
                                                     script,
                                                     new object[] {}));
            }
            catch {
                return(null);
            }
        }
Пример #6
0
        /// <summary>
        /// 调用JS函数
        /// </summary>
        /// <param name="fnName">js函数名</param>
        /// <param name="args">入参</param>
        protected void CallJSFun(string fnName, params object[] args)
        {
            if (typeIOleObject == null)
            {
                typeIOleObject = this.GetType().GetInterface("IOleObject", true);
                object tmpOldClientSite = typeIOleObject.InvokeMember("GetClientSite", BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public,
                                                                      null,
                                                                      this,
                                                                      null);

                oleClientSite = tmpOldClientSite as IOleClientSite;
                oleClientSite.GetContainer(out pObj);
            }

            //获取页面的Script集合
            IHTMLDocument pDoc2  = (IHTMLDocument)pObj;
            object        script = pDoc2.Script;

            try
            {
                //调用JavaScript方法OnScaned并传递参数,因为此方法可能并没有在页面中实现,所以要进行异常处理
                script.GetType().InvokeMember(fnName,
                                              BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public,
                                              null,
                                              script,
                                              args);
            }
            catch { }
        }
Пример #7
0
 public static extern int OleCreateFromFile([In] ref Guid rclsid,
                                            [MarshalAs(UnmanagedType.LPWStr)] string lpszFileName,
                                            [In] ref Guid riid,
                                            uint renderopt,
                                            ref FORMATETC pFormatEtc,
                                            IOleClientSite pClientSite,
                                            IStorage pStg,
                                            [MarshalAs(UnmanagedType.IUnknown)] out object ppvObj);
Пример #8
0
 public static extern int OleCreateFromFile([In] ref Guid rclsid,
     [MarshalAs(UnmanagedType.LPWStr)] string lpszFileName, 
     [In] ref Guid riid,
     uint renderopt, 
     ref FORMATETC pFormatEtc, 
     IOleClientSite pClientSite,
     IStorage pStg, 
     [MarshalAs(UnmanagedType.IUnknown)] out object ppvObj);
Пример #9
0
 internal static extern IntPtr OleCreateStaticFromData(
     [In, MarshalAs(UnmanagedType.Interface)]
     System.Runtime.InteropServices.ComTypes.IDataObject pSrcDataObj,
     [In] ref Guid riid,
     [In] OleRender renderopt,
     [In] ref FORMATETC pFormatEtc,
     [In, MarshalAs(UnmanagedType.Interface)]
     IOleClientSite pClientSite,
     [In, MarshalAs(UnmanagedType.Interface)]
     IStorage pStg);
Пример #10
0
        public void RefreshView()
        {
            ICustomDoc cDoc = (ICustomDoc)this.ieInstance.Document;

            if (cDoc != null)
            {
                IOleClientSite oleObj = cDoc as IOleClientSite;
                if (oleObj != null)
                {
                    oleObj.ShowObject();
                }
            }
        }
Пример #11
0
        public void LoadFile(String s)
        {
            if (s == null || s.Trim().Length == 0)
            {
                navi = "";
            }
            else if (Site == null)
            {
                bwLoader.RunWorkerAsync(s);
            }
            else
            {
                IOleClientSite pClientSite = (IOleClientSite)Site.GetService(new AntiMoniker().GetType());
                if (pClientSite != null)
                {
                    IMoniker pimkDL = null;
                    try {
                        if (pimkDL == null)
                        {
                            IBindHost pBindHost = (IBindHost)pClientSite;
                            pBindHost.CreateMoniker(s, null, out pimkDL, 0);
                        }
                        if (pimkDL == null)
                        {
                            IMoniker pimkName = null;
                            pClientSite.GetMoniker(OLEGETMONIKER_FORCEASSIGN, OLEWHICHMK_CONTAINER, out pimkName);
                            try {
                                int chEaten;
                                pimkName.ParseDisplayName(null, pimkName, s, out chEaten, out pimkDL);
                            }
                            finally {
                                Marshal.ReleaseComObject(pimkName);
                            }
                        }
                        if (pimkDL != null)
                        {
                            pimkDL.GetDisplayName(null, null, out title);
                            if (!String.IsNullOrEmpty(title))
                            {
                                s = title;
                            }
                        }
                    }
                    finally {
                        Marshal.ReleaseComObject(pimkDL);
                    }
                }

                bwLoader.RunWorkerAsync(s);
            }
        }
            // constructor
            public ImprovedWebBrowserSite(WebBrowser host) :
                base(host)
            {
                // get the CCW object for this
                _unkOuter = Marshal.GetIUnknownForObject(this);
                Marshal.AddRef(_unkOuter);
                try
                {
                    // aggregate the CCW object with the helper Inner object
                    _inner = new Inner(this);
                    _unkInnerAggregated = Marshal.CreateAggregatedObject(_unkOuter, _inner);

                    // turn private WebBrowserSiteBase.IOleClientSite into our own IOleClientSite
                    _baseIOleClientSite = (IOleClientSite)Marshal.GetTypedObjectForIUnknown(_unkInnerAggregated, typeof(IOleClientSite));
                }
                finally
                {
                    Marshal.Release(_unkOuter);
                }
            }
            // constructor
            public ImprovedWebBrowserSite(WebBrowser host) :
                base(host)
            {
                // get WebBrowserSiteBase.IOleClientSite via reflection
                var typeBaseIOleClientSite = typeof(WebBrowserSiteBase).GetInterfaces().First((t) =>
                                                                                              t.GUID == typeof(IOleClientSite).GUID);

                // get the COM interface for WebBrowserSiteBase.IOleClientSite
                _unkBaseIOleClientSite = Marshal.GetComInterfaceForObject(this, typeBaseIOleClientSite, CustomQueryInterfaceMode.Ignore);
                Marshal.AddRef(_unkBaseIOleClientSite);                 // protect _unkBaseIOleClientSite

                // aggregate it with the helper Inner object
                _inner = new Inner(_unkBaseIOleClientSite);
                _unkInnerAggregated = Marshal.CreateAggregatedObject(_unkBaseIOleClientSite, _inner);

                // turn private WebBrowserSiteBase.IOleClientSite into our own IOleClientSite
                _baseIOleClientSite = (IOleClientSite)Marshal.GetTypedObjectForIUnknown(_unkInnerAggregated, typeof(IOleClientSite));

                Marshal.Release(_unkBaseIOleClientSite);
            }
Пример #14
0
        public static RichEditObject FromBitmap(Int32 charIndex, IOleClientSite site, Bitmap bitmap)
        {
            const int CF_BITMAP       = 2;
            var       IID_IDataObject = IIDOf <ComTypes.IDataObject>();

            var dataObject    = new DataObject(bitmap);
            var comDataObject = (ComTypes.IDataObject)(dataObject);

            var formatEtc = new ComTypes.FORMATETC()
            {
                lindex   = -1,
                ptd      = IntPtr.Zero,
                cfFormat = CF_BITMAP,
                tymed    = ComTypes.TYMED.TYMED_GDI,
                dwAspect = ComTypes.DVASPECT.DVASPECT_CONTENT,
            };

            var storage   = CreateIStorageOnHGlobal();
            var oleObject = NativeMethods.OleCreateStaticFromData(dataObject,
                                                                  ref IID_IDataObject,
                                                                  OleRender.Format,
                                                                  ref formatEtc,
                                                                  site,
                                                                  storage);

            NativeMethods.OleSetContainedObject(oleObject, true);

            return(new RichEditObject()
            {
                _charIndex = charIndex,
                _storage = storage,
                _site = site,

                _dvaspect = ComTypes.DVASPECT.DVASPECT_CONTENT,
                _flags = RichEditObjectFlags.BelowBaseline | RichEditObjectFlags.InPlaceActive,
                _clsid = Marshal.GenerateGuidForType(dataObject.GetType()),
                _object = oleObject,
            });
        }
Пример #15
0
        public static RichEditObject FromControl(Int32 charIndex, IOleClientSite site, Control control)
        {
            var storage = CreateIStorageOnHGlobal();

            try
            {
                return(new RichEditObject()
                {
                    _charIndex = charIndex,
                    _storage = storage,
                    _site = site,

                    _dvaspect = ComTypes.DVASPECT.DVASPECT_CONTENT,
                    _flags = RichEditObjectFlags.BelowBaseline | RichEditObjectFlags.InvertedSelect,
                    _clsid = Marshal.GenerateGuidForType(control.GetType()),
                    _object = Marshal.GetIUnknownForObject(control),
                });
            }
            finally
            {
                Marshal.ReleaseComObject(storage);
            }
        }
Пример #16
0
 public virtual void SetClientSite(IOleClientSite site){
   this.pClientSite = site;
 }
Пример #17
0
 public virtual void GetClientSite(out IOleClientSite site){
   site = this.pClientSite;
 }
Пример #18
0
 public virtual int DoVerb(int iVerb, MSG[] msg, IOleClientSite site, 
   int index, IntPtr hwndParent, RECT[] posRect){
   return 0;
 }
Пример #19
0
		public int SetClientSite(IOleClientSite pClientSite)
		{
			ComDebug.ReportInfo("{0}.IOleObject.SetClientSite", this.GetType().Name);
			_clientSite = pClientSite;
			return ComReturnValue.NOERROR;
		}
Пример #20
0
 /// <include file='doc\EditorView.uex' path='docs/doc[@for="OleEditorView.SetClientSite"]/*' />
 public virtual void SetClientSite(IOleClientSite site)
 {
     this.pClientSite = site;
 }
Пример #21
0
 public int SetClientSite(IOleClientSite pClientSite)
 {
     ComDebug.ReportInfo("{0}.IOleObject.SetClientSite", GetType().Name);
     _clientSite = pClientSite;
     return(ComReturnValue.NOERROR);
 }
Пример #22
0
		public int DoVerb(int iVerb, IntPtr lpmsg, IOleClientSite pActiveSite, int lindex, IntPtr hwndParent, COMRECT lprcPosRect)
		{
			ComDebug.ReportInfo("{0}.IOleObject.DoVerb {1}", this.GetType().Name, iVerb);
			try
			{
				// I saw OLEIVERB_HIDE come in as 253.  Perhaps a unsigned
				// byte conversion happening somewhere.
				if (iVerb >= 250 && iVerb <= 255)
				{
					int new_iverb = iVerb - 256;
					ComDebug.ReportWarning("{0}.IOleObject.DoVerb -> Fixing iVerb: {1} -> {2}", this.GetType().Name, iVerb, new_iverb);
					iVerb = new_iverb;
				}

				_lastVerb = iVerb;

				switch (iVerb)
				{
					case (int)OLEIVERB.OLEIVERB_HIDE:
						ComDebug.ReportInfo("{0}.IOleObject.DoVerb OLEIVERB_HIDE", this.GetType().Name);
						_comManager.ApplicationAdapter.HideMainWindow();
						SendAdvise_HideWindow();
						break;

					case (int)OLEIVERB.OLEIVERB_PRIMARY:
					case (int)OLEIVERB.OLEIVERB_SHOW:
					case (int)OLEIVERB.OLEIVERB_OPEN:

						if ((int)OLEIVERB.OLEIVERB_PRIMARY == iVerb) ComDebug.ReportInfo("{0}.IOleObject.DoVerb OLEIVERB_PRIMARY", this.GetType().Name);
						if ((int)OLEIVERB.OLEIVERB_SHOW == iVerb) ComDebug.ReportInfo("{0}.IOleObject.DoVerb OLEIVERB_SHOW", this.GetType().Name);
						if ((int)OLEIVERB.OLEIVERB_OPEN == iVerb) ComDebug.ReportInfo("{0}.IOleObject.DoVerb OLEIVERB_OPEN", this.GetType().Name);
						_comManager.ApplicationAdapter.ShowMainWindow();
						if (pActiveSite != null)
						{
							ComDebug.ReportInfo("{0}.IOleObject.DoVerb -> calling ClientSite.ShowObject()", this.GetType().Name);
							try
							{
								pActiveSite.ShowObject();
							}
							catch (Exception ex)
							{
								ComDebug.ReportInfo("{0}.IOleObject.DoVerb pActiveSite.ShowObject caused an exception: {1}", this.GetType().Name, ex);
							}

							SendAdvise_ShowWindow();
						}

						return ComReturnValue.NOERROR;

					default:
						ComDebug.ReportError("{0}.IOleObject.DoVerb Unexpected verb: {1}", this.GetType().Name, iVerb);
						return ComReturnValue.OLEOBJ_S_INVALIDVERB;
				}
				ComDebug.ReportInfo("{0}.IOleObject.DoVerb -> returning NOERROR", this.GetType().Name);
				return ComReturnValue.NOERROR;
			}
			catch (Exception e)
			{
				ComDebug.ReportError("{0}.IOleObject.DoVerb throw an exception. Details: {1}", this.GetType().Name, e);
				throw;
			}
		}
Пример #23
0
 void IOleObject.SetClientSite(IOleClientSite pClientSite)
 {
     _ClientSite = pClientSite;
 }
Пример #24
0
 public static extern int OleCreate(ref GUID rclsid, ref GUID riid, uint renderopt, ref tagFORMATETC pFormatEtc, ref IOleClientSite pClientSite, ref IStorage pStg, ref IntPtr ppvObj);
Пример #25
0
        public int DoVerb(int iVerb, IntPtr lpmsg, IOleClientSite pActiveSite, int lindex, IntPtr hwndParent, COMRECT lprcPosRect)
        {
            ComDebug.ReportInfo("{0}.IOleObject.DoVerb {1}", GetType().Name, iVerb);
            try
            {
                // I saw OLEIVERB_HIDE come in as 253.  Perhaps a unsigned
                // byte conversion happening somewhere.
                if (iVerb >= 250 && iVerb <= 255)
                {
                    int new_iverb = iVerb - 256;
                    ComDebug.ReportWarning("{0}.IOleObject.DoVerb -> Fixing iVerb: {1} -> {2}", GetType().Name, iVerb, new_iverb);
                    iVerb = new_iverb;
                }

                _lastVerb = iVerb;

                switch (iVerb)
                {
                case (int)OLEIVERB.OLEIVERB_HIDE:
                    ComDebug.ReportInfo("{0}.IOleObject.DoVerb OLEIVERB_HIDE", GetType().Name);
                    _comManager.ApplicationAdapter.HideMainWindow();
                    SendAdvise_HideWindow();
                    break;

                case (int)OLEIVERB.OLEIVERB_PRIMARY:
                case (int)OLEIVERB.OLEIVERB_SHOW:
                case (int)OLEIVERB.OLEIVERB_OPEN:

                    if ((int)OLEIVERB.OLEIVERB_PRIMARY == iVerb)
                    {
                        ComDebug.ReportInfo("{0}.IOleObject.DoVerb OLEIVERB_PRIMARY", GetType().Name);
                    }
                    if ((int)OLEIVERB.OLEIVERB_SHOW == iVerb)
                    {
                        ComDebug.ReportInfo("{0}.IOleObject.DoVerb OLEIVERB_SHOW", GetType().Name);
                    }
                    if ((int)OLEIVERB.OLEIVERB_OPEN == iVerb)
                    {
                        ComDebug.ReportInfo("{0}.IOleObject.DoVerb OLEIVERB_OPEN", GetType().Name);
                    }
                    _comManager.ApplicationAdapter.ShowMainWindow();
                    if (pActiveSite != null)
                    {
                        ComDebug.ReportInfo("{0}.IOleObject.DoVerb -> calling ClientSite.ShowObject()", GetType().Name);
                        try
                        {
                            pActiveSite.ShowObject();
                        }
                        catch (Exception ex)
                        {
                            ComDebug.ReportInfo("{0}.IOleObject.DoVerb pActiveSite.ShowObject caused an exception: {1}", GetType().Name, ex);
                        }

                        SendAdvise_ShowWindow();
                    }

                    return(ComReturnValue.NOERROR);

                default:
                    ComDebug.ReportError("{0}.IOleObject.DoVerb Unexpected verb: {1}", GetType().Name, iVerb);
                    return(ComReturnValue.OLEOBJ_S_INVALIDVERB);
                }
                ComDebug.ReportInfo("{0}.IOleObject.DoVerb -> returning NOERROR", GetType().Name);
                return(ComReturnValue.NOERROR);
            }
            catch (Exception e)
            {
                ComDebug.ReportError("{0}.IOleObject.DoVerb throw an exception. Details: {1}", GetType().Name, e);
                throw;
            }
        }
Пример #26
0
		static extern int OleCreateLinkFromData([MarshalAs(UnmanagedType.Interface)]IDataObject pSrcDataObj,
			[In] ref Guid riid, uint renderopt, ref FORMATETC pFormatEtc,
			IOleClientSite pClientSite, IStorage pStg,
			[MarshalAs(UnmanagedType.IUnknown)] out object ppvObj);
Пример #27
0
 int IOleObject.DoVerb(int iVerb, Msg[] lpmsg, IOleClientSite pActiveSite, int lindex, IntPtr hWndParent, Rect[] lprcPosRect)
 {
     //TODO
     return(0);
 }
Пример #28
0
 void IOleObject.GetClientSite(out IOleClientSite ppClientSite)
 {
     ppClientSite = _ClientSite;
 }
Пример #29
0
 /// <include file='doc\EditorView.uex' path='docs/doc[@for="OleEditorView.DoVerb"]/*' />
 public virtual int DoVerb(int iVerb, MSG[] msg, IOleClientSite site, int index, IntPtr hwndParent, RECT[] posRect)
 {
     return(NativeMethods.S_OK);
 }
Пример #30
0
 /// <include file='doc\EditorView.uex' path='docs/doc[@for="OleEditorView.GetClientSite"]/*' />
 public virtual void GetClientSite(out IOleClientSite site)
 {
     site = this.pClientSite;
 }
Пример #31
0
 unsafe HRESULT IOleObject.DoVerb(OLEIVERB iVerb, User32.MSG *lpmsg, IOleClientSite pActiveSite, int lindex, IntPtr hwndParent, RECT *lprcPosRect)
 {
     return(HRESULT.S_OK);
 }
Пример #32
0
 public static extern int OleCreateStaticFromData([MarshalAs(UnmanagedType.Interface)] IDataObject pSrcDataObj,
                                                  [In] ref Guid riid, uint renderopt, ref FORMATETC pFormatEtc,
                                                  IOleClientSite pClientSite, IStorage pStg,
                                                  [MarshalAs(UnmanagedType.IUnknown)] out object ppvObj);
Пример #33
0
        /// <summary>
        /// 调用JS函数
        /// </summary>
        /// <param name="fnName">js函数名</param>
        /// <param name="args">入参</param>
        protected void CallJS(string fnName, params object[] args)
        {
            if (typeIOleObject == null)
            {
                typeIOleObject = this.GetType().GetInterface("IOleObject", true);
                object tmpOldClientSite = typeIOleObject.InvokeMember("GetClientSite",
                 BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public,
                null,
                this,
                null);

                oleClientSite = tmpOldClientSite as IOleClientSite;
                oleClientSite.GetContainer(out pObj);
            }

            //获取页面的Script集合
            IHTMLDocument pDoc2 = (IHTMLDocument)pObj;
            object script = pDoc2.Script;

            try
            {
                //调用JavaScript方法OnScaned并传递参数,因为此方法可能并没有在页面中实现,所以要进行异常处理
                script.GetType().InvokeMember(fnName,
                BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public,
               null,
                script,
                args);
            }
            catch { }
        }
Пример #34
0
 public static extern int OleCreateFromData(ref IDataObject pSrcDataObj, ref GUID riid, uint renderopt, ref tagFORMATETC pFormatEtc, ref IOleClientSite pClientSite, ref IStorage pStg, ref IntPtr ppvObj);
Пример #35
0
 HRESULT IOleObject.GetClientSite(out IOleClientSite ppClientSite)
 {
     ppClientSite = null;
     return(HRESULT.S_OK);
 }
Пример #36
0
 public static extern int OleCreateEx(ref GUID rclsid, ref GUID riid, uint dwFlags, uint renderopt, uint cFormats, ref uint rgAdvf, ref tagFORMATETC rgFormatEtc, ref IAdviseSink lpAdviseSink, ref uint rgdwConnection, ref IOleClientSite pClientSite, ref IStorage pStg, ref IntPtr ppvObj);
Пример #37
0
 HRESULT IOleObject.SetClientSite(IOleClientSite pClientSite)
 {
     return(HRESULT.S_OK);
 }
Пример #38
0
 public static extern int OleCreateFromFile(ref GUID rclsid, [In][MarshalAs(UnmanagedType.LPWStr)] string lpszFileName, ref GUID riid, uint renderopt, ref tagFORMATETC lpFormatEtc, ref IOleClientSite pClientSite, ref IStorage pStg, ref IntPtr ppvObj);