Esempio n. 1
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 { }
        }
Esempio n. 2
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);
            }
        }
Esempio n. 3
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 { }
        }
Esempio n. 4
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 { }
        }
 public int GetContainer(out IntPtr ppContainer)
 {
     Debug.Print("IOleClientSite.GetContainer");
     return(_baseIOleClientSite.GetContainer(out ppContainer));
 }