分享

C# webbroswer 怎么禁止flash下载呢?

 quasiceo 2014-06-16
回复次数:7
Dobzhansky
关注
Dobzhansky
Dobzhansky
等级:Blank
#1 得分:40 回复于: 2010-03-15 23:53:14
web browser 不爽, mshtml 是一个 IOleObject, 我们提供一个 IOleClientSite,
可以禁止一些东西

C# code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  [ComVisible(true)]
  public class DownloadOnlySite : IOleClientSite
  {
    public DownloadOnlySite()
    {
    }
    [DispId(dispids.DISPID_AMBIENT_DLCONTROL)]
    public int Idispatch_Invoke_Handler()
    {
      return (int)constants.DLCTL_NO_SCRIPTS |
                (int)constants.DLCTL_NO_JAVA |
                (int)constants.DLCTL_NO_DLACTIVEXCTLS |
                (int)constants.DLCTL_NO_RUNACTIVEXCTLS |// 这个可以禁止 activex 运行
                (int)constants.DLCTL_DOWNLOADONLY |
                (int)constants.DLCTL_SILENT |
                (int)constants.DLCTL_DLIMAGES | 0;
    }
    //......
Dobzhansky
关注
Dobzhansky
Dobzhansky
等级:Blank
#2 得分:0 回复于: 2010-03-16 09:22:29
C# code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    public static void LoadUrl(mshtml.HTMLDocument doc, bool CreateSite, string url)
    {
      if (doc == null)
        throw new ArgumentNullException("doc");
      if (CreateSite)
      {
        DownloadOnlySite s = new DownloadOnlySite();
        IOleObject o = (IOleObject)doc;
        o.SetClientSite(s);
      }
      IPersistMoniker persistMoniker = null;
      IMoniker urlMoniker = null;
      IBindCtx bindContext = null;
      int iResult = HRESULT.S_FALSE;
      persistMoniker = (IPersistMoniker)doc;
      iResult = win32.CreateURLMoniker(null, url, out urlMoniker);
      iResult = win32.CreateBindCtx(0, out bindContext);
      iResult = persistMoniker.Load(0, urlMoniker, bindContext, BKit.Win32.STGM.STGM_READ);
       
      persistMoniker = null;
      bindContext = null;
      urlMoniker = null;
    }


C# code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  [ComVisible(true)]
  public class DownloadOnlySite : IOleClientSite
  {
    public DownloadOnlySite()
    {
    }
    [DispId(dispids.DISPID_AMBIENT_DLCONTROL)]
    public int Idispatch_Invoke_Handler()
    {
      Debug.WriteLine("Idispatch_Invoke_Handler called");
      return (int)constants.DLCTL_NO_SCRIPTS |
                (int)constants.DLCTL_NO_JAVA |
                (int)constants.DLCTL_NO_DLACTIVEXCTLS |
                (int)constants.DLCTL_NO_RUNACTIVEXCTLS |
                (int)constants.DLCTL_DOWNLOADONLY |
                (int)constants.DLCTL_SILENT |
                (int)constants.DLCTL_DLIMAGES | 0;
    }
    #region IOleClientSite
    int IOleClientSite.SaveObject()
    {
      return HRESULT.S_OK;
    }
    int IOleClientSite.GetMoniker(uint dwAssign, uint dwWhichMoniker, out Object ppmk)
    {
      ppmk = null;
      return HRESULT.E_NOTIMPL;
    }
    int IOleClientSite.GetContainer(out IOleContainer ppContainer)
    {
      ppContainer = null;
      return HRESULT.E_NOINTERFACE;
    }
    int IOleClientSite.ShowObject()
    {
      return HRESULT.S_OK;
    }
    int IOleClientSite.OnShowWindow(int fShow)
    {
      return HRESULT.S_OK;
    }
    int IOleClientSite.RequestNewObjectLayout()
    {
      return HRESULT.S_OK;
    }
    #endregion
  };
Dobzhansky
关注
Dobzhansky
Dobzhansky
等级:Blank
#3 得分:0 回复于: 2010-03-16 09:23:01
WebBrowser.Document.DomDocument as  mshtml.HtmlDocument;
henjiandan
关注
henjiandan
henjiandan
等级:Blank
#4 得分:0 回复于: 2010-03-16 17:29:35
IOleClientSite

IOleContainer

是引用什么??
henjiandan
关注
henjiandan
henjiandan
等级:Blank
#5 得分:0 回复于: 2010-03-24 15:25:12
等待Dobzhansky
  的回复。
xingyuebuyu
关注
xingyuebuyu
xingyuebuyu
等级:Blank
#6 得分:0 回复于: 2010-03-24 15:29:28
http://topic.csdn.net/u/20100316/22/625d813e-0f4b-431c-8da3-6137eb7a36a1.html?33497

C# code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 [ComVisible(true), Guid("00000118-0000-0000-C000-000000000046"),
   InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
  public interface IOleClientSite
  {
    [return: MarshalAs(UnmanagedType.I4)]
    [PreserveSig]
    int SaveObject();
    [return: MarshalAs(UnmanagedType.I4)]
    [PreserveSig]
    int GetMoniker(
      [In, MarshalAs(UnmanagedType.U4)] uint dwAssign,
      [In, MarshalAs(UnmanagedType.U4)] uint dwWhichMoniker,
      [Out, MarshalAs(UnmanagedType.Interface)] out Object ppmk);
    [return: MarshalAs(UnmanagedType.I4)]
    [PreserveSig]
    int GetContainer([Out] out IOleContainer ppContainer);
    [return: MarshalAs(UnmanagedType.I4)]
    [PreserveSig]
    int ShowObject();
    [return: MarshalAs(UnmanagedType.I4)]
    [PreserveSig]
    int OnShowWindow([In, MarshalAs(UnmanagedType.I4)] int fShow);
    [return: MarshalAs(UnmanagedType.I4)]
    [PreserveSig]
    int RequestNewObjectLayout();
  }
  [ComVisible(true), Guid("0000011B-0000-0000-C000-000000000046"),
   InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
  public interface IOleContainer
  {
    [return: MarshalAs(UnmanagedType.I4)]
    [PreserveSig]
    int ParseDisplayName(
      [In, MarshalAs(UnmanagedType.Interface)] Object pbc,
      [In, MarshalAs(UnmanagedType.LPWStr)] String pszDisplayName,
      [Out, MarshalAs(UnmanagedType.LPArray)] int[] pchEaten,
      [Out, MarshalAs(UnmanagedType.LPArray)] Object[] ppmkOut);
    [return: MarshalAs(UnmanagedType.I4)]
    [PreserveSig]
    int EnumObjects(
      [In, MarshalAs(UnmanagedType.U4)] uint grfFlags,
      [Out, MarshalAs(UnmanagedType.LPArray)] Object[] ppenum);
    [return: MarshalAs(UnmanagedType.I4)]
    [PreserveSig]
    int LockContainer([In, MarshalAs(UnmanagedType.Bool)] Boolean fLock);
  }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多