当前位置:  开发笔记 > 编程语言 > 正文

IE中的.NET ActiveX组件 - 如何获取浏览器参考

如何解决《IE中的.NETActiveX组件-如何获取浏览器参考》经验,为你挑选了0个好方法。

我承认我对COM和IE架构的了解足够危险.我有一个与此类似的工作C#.NET ActiveX控件:

using System;
using System.Runtime.InteropServices;
using BrowseUI;
using mshtml;
using SHDocVw;
using Microsoft.Win32;

    namespace CTI
    {
        public interface CTIActiveXInterface
        {
            [DispId(1)]
            string GetMsg();
        }

        [ComVisible(true), ClassInterface(ClassInterfaceType.AutoDual)]
        public class CTIActiveX : CTIActiveXInterface
        {

            /*** Where can I get a reference to SHDocVw.WebBrowser? *****/
            SHDocVw.WebBrowser browser;

            public string GetMsg()
            {
                return "foo";
            }
        }
    }

我使用regasm注册并创建了一个类型库:

regasm CTIActiveX.dll /tlb:CTIActiveXNet.dll /codebase

并且可以在javascript中成功实例化:

var CTIAX = new ActiveXObject("CTI.CTIActiveX");
alert(CTIAX.GetMsg());  

如何在CTIActiveX中获取对客户端站点(浏览器窗口)的引用?我通过实现IObjectWithSite在BHO中完成了这个,但我不认为这是ActiveX控件的正确方法.如果我尝试在Javascript中实例化时在CTIActiveX上实现任何接口(我的意思是像IObjectWithSite这样的COM接口),我会收到一个错误,该对象不支持自动化.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有