<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      VS 2010 開發 ActiveX 交互篇一

      JavaScript 調用 ActiveX 控件中的方法

      1. 在 InfoViewer 中添加一方法,用來彈出一個MessageBox

              public void Alert(string msg)
              {
                   MessageBox.Show(msg);
              }


      2. 修改 HTML 的代碼

          <object id="inforViewer" classid="clsid:B3BCD23C-53EE-4661-83E0-559E5D022514"></object>
          <input type='button' onclick='inforViewer.Alert("Hello")' value='Click Me'>


      3. IE 中查看 Html 頁面,此時點擊 Click Me 按鈕,并不會彈出一個MessageBox,在IE默認安全級別下,會阻止運行ActiveX


      4. 修改 IE 的本地安全級別為低或者添加至可信站點

      5. 刷新頁面,再次點擊 Click Me 按鈕,會彈出詢問窗口


      6. 選擇是即可交互成功

       

      屏蔽調用ActiveX控件方法時彈出的詢問窗口
      1. 添加一個接口 IObjectSafety,這個接口的代碼不能改動

          [ComImport, GuidAttribute("CB5BDC81-93C1-11CF-8F20-00805F2CD064")]
          [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
          public interface IObjectSafety
          {
              [PreserveSig]
              int GetInterfaceSafetyOptions(ref Guid riid,
                            [MarshalAs(UnmanagedType.U4)] ref int pdwSupportedOptions,
                            [MarshalAs(UnmanagedType.U4)] ref int pdwEnabledOptions);
      
              [PreserveSig()]
              int SetInterfaceSafetyOptions(ref Guid riid,
                            [MarshalAs(UnmanagedType.U4)] int dwOptionSetMask,
                            [MarshalAs(UnmanagedType.U4)] int dwEnabledOptions);
          }


      2. InfoViewer 實現 IObjectSafety 接口

              private const string _IID_IDispatch = "{00020400-0000-0000-C000-000000000046}";
              private const string _IID_IDispatchEx = "{a6ef9860-c720-11d0-9337-00a0c90dcaa9}";
              private const string _IID_IPersistStorage = "{0000010A-0000-0000-C000-000000000046}";
              private const string _IID_IPersistStream = "{00000109-0000-0000-C000-000000000046}";
              private const string _IID_IPersistPropertyBag = "{37D84F60-42CB-11CE-8135-00AA004BB851}";
      
              private const int INTERFACESAFE_FOR_UNTRUSTED_CALLER = 0x00000001;
              private const int INTERFACESAFE_FOR_UNTRUSTED_DATA = 0x00000002;
              private const int S_OK = 0;
              private const int E_FAIL = unchecked((int)0x80004005);
              private const int E_NOINTERFACE = unchecked((int)0x80004002);
      
              private bool _fSafeForScripting = true;
              private bool _fSafeForInitializing = true;
      
              public int GetInterfaceSafetyOptions(ref Guid riid,
                                   ref int pdwSupportedOptions,
                                   ref int pdwEnabledOptions)
              {
                  int Rslt = E_FAIL;
      
                  string strGUID = riid.ToString("B");
                  pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA;
                  switch (strGUID)
                  {
                      case _IID_IDispatch:
                      case _IID_IDispatchEx:
                          Rslt = S_OK;
                          pdwEnabledOptions = 0;
                          if (_fSafeForScripting == true)
                              pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER;
                          break;
                      case _IID_IPersistStorage:
                      case _IID_IPersistStream:
                      case _IID_IPersistPropertyBag:
                          Rslt = S_OK;
                          pdwEnabledOptions = 0;
                          if (_fSafeForInitializing == true)
                              pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA;
                          break;
                      default:
                          Rslt = E_NOINTERFACE;
                          break;
                  }
      
                  return Rslt;
              }
      
              public int SetInterfaceSafetyOptions(ref Guid riid,
                                   int dwOptionSetMask,
                                   int dwEnabledOptions)
              {
                  int Rslt = E_FAIL;
      
                  string strGUID = riid.ToString("B");
                  switch (strGUID)
                  {
                      case _IID_IDispatch:
                      case _IID_IDispatchEx:
                          if (((dwEnabledOptions & dwOptionSetMask) == INTERFACESAFE_FOR_UNTRUSTED_CALLER) &&
                               (_fSafeForScripting == true))
                              Rslt = S_OK;
                          break;
                      case _IID_IPersistStorage:
                      case _IID_IPersistStream:
                      case _IID_IPersistPropertyBag:
                          if (((dwEnabledOptions & dwOptionSetMask) == INTERFACESAFE_FOR_UNTRUSTED_DATA) &&
                               (_fSafeForInitializing == true))
                              Rslt = S_OK;
                          break;
                      default:
                          Rslt = E_NOINTERFACE;
                          break;
                  }
      
                  return Rslt;
              }


      3. 重新編譯項目,IE 中查看 Html 頁面,點擊 Click Me 按鈕,已經不會再彈出詢問窗口了

      posted @ 2013-03-21 16:25  踏歌長行  閱讀(251)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 在线日韩日本国产亚洲| 国产精品日日摸夜夜添夜夜添无码| 国产一区二区三区尤物视频| 亚洲国产精品一区二区三| 露脸国产精品自产拍在线观看| 亚洲va久久久噜噜噜久久狠狠| 日本亚洲一区二区精品久久| 亚洲一本二区偷拍精品| 狠狠cao日日穞夜夜穞av| 秋霞电影网| 99国产精品白浆在线观看免费 | 久久天天躁狠狠躁夜夜婷| 久久无码av中文出轨人妻| 国产精品视频一区二区不卡| 亚洲欧美人成电影在线观看| 97在线视频人妻无码| 午夜大尺度福利视频一区| 无码专区 人妻系列 在线| 综合色天天久久| 99精品国产在热久久婷婷| 国内精品久久黄色三级乱| 色综合中文综合网| 亚洲深夜精品在线观看| 日韩人妻少妇一区二区三区| 91毛片网| 日产国产一区二区不卡| 国产成人片无码视频| 国产在线精品欧美日韩电影| 国产毛片基地| 成人国产亚洲精品天堂av| 国产一区二区午夜福利久久| 国产自产对白一区| 亚洲av区一区二区三区| 亚洲最大国产成人综合网站| 夜夜嗨久久人成在日日夜夜| 男人的天堂av社区在线| 日韩精品一区二区三区激情视频| 黑人异族巨大巨大巨粗| 麻豆精品一区二区视频在线| 久久久久成人精品免费播放动漫| 久热这里有精品免费视频|