Shotgun' blog

欢迎进入Shogtun的blog。

« vb6,xmlHttp 乱码解决方法win7 3d窗口切换快捷 »

Webbrowse编程必备接口IPersistStreamInit

用webbrowse做界面是少不了生成临时的html文件。而现在有了未公开的IPersistStreamInit 接口,这一切就将改变。因为它可以让你直接从内存中加载html文件。

IPersistStreamInit 接代码:

    [ComVisible(true), ComImport(), Guid("7FD52380-4E07-101B-AE2D-08002B2EC713"),
      InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IPersistStreamInit
    {
        void GetClassID([In, Out] ref Guid pClassID);

        [return: MarshalAs(UnmanagedType.I4)]
        [PreserveSig]
        int IsDirty();

        void Load([In, MarshalAs(UnmanagedType.Interface)] UCOMIStream pstm);
        void Save([In, MarshalAs(UnmanagedType.Interface)] UCOMIStream pstm,
                  [In, MarshalAs(UnmanagedType.I4)] int fClearDirty);
        void GetSizeMax([Out, MarshalAs(UnmanagedType.LPArray)] long pcbSize);
        void InitNew();
    }

示例代码:

            //记得引用 System.Runtime.InteropServices;
            UCOMIStream stream = null;
            IntPtr buff = Marshal.AllocHGlobal(htmlBytes.Length);//byte[] htmlBytes;
            Marshal.Copy(htmlBytes, 0, buff, htmlBytes.Length);
            CreateStreamOnHGlobal(buff, true, out stream);
             try
            {
                IPersistStreamInit ips = (IPersistStreamInit)Webbrowse.Document;
                ips.InitNew();
                ips.Load(stream);
                ips = null;
            }
            catch
            {
            }

            Marshal.FreeHGlobal(buff);

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Walle Build 100427

Copyright 2010 www.yangtuotuo.com . All Rights Reserved.