精华内容
参与话题
问答
  • ie插件制作

    千次阅读 2011-06-08 12:38:00
    正文在Windows操作系统上,我们最常见的浏览器有两种:文件浏览器(exploer.exe,应用于文件系统)和Internet浏览器(iexplore.exe,应用于互联网资源)。由于这两个浏览器功能强大,而且又与Windows操作系统捆绑...

    正文
    在Windows操作系统上,我们最常见的浏览器有两种:文件浏览器(exploer.exe,应用于文件系统)和Internet浏览器(iexplore.exe,应用于互联网资源)。由于这两个浏览器功能强大,而且又与Windows操作系统捆绑销售,最终也就成为了浏览器的标准。但有时候,为了给浏览器加入一些新的特性,我们往往会重新设计一个自己的浏览器。新的浏览器模仿标准浏览器的大部分功能,同时加入新特性。这种做法最直观,但实际上也是相对于微软的重复劳动,且工作量比较大。其实,使用BHO插件,一切都变得很简单。

    BHO(Browser Help Objects),是实现了特定接口的COM组件。开发好的BHO插件在注册表特定的位置注册好后,每当微软的浏览器启动,BHO实例就会被创建。在浏览器工作的工程中,BHO会接收到很多事件,比如浏览器浏览新的地址、前进或后退、生成新的窗口、浏览器退出等等;BHO可以在这些事件的响应中实现与浏览器的交互。

    下面,我们首先来介绍一下BHO的工作原理。上面我们已经提到,BHO是COM组件,而且一定实现了IObjectWithSite接口。这些组件除了在注册表中注册为COM Server外,还必须将它们的CLSID在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/ CurrentVersion/Explorer/Browser Helper Objects下注册为子键。微软在设计浏览器的时候,已经给这些组件预留了空间。每当浏览器启动时,浏览器会首先在上述注册表位置查看是否有注册的BHO CLSID;如果有则分别创建一个实例,并对BHO实例进行初始化,建立交互连接。(注:BHO实例只有在创建它的浏览器窗口销毁时才被释放。)下图演示了BHO的创建过程:


    成功创建的BHO,不仅可以得到各种标准的浏览器操作事件,并做出响应;还可以定制浏览器的菜单、工具条等界面元素;更或者可以安装钩子函数,监视浏览器的一举一动。值得注意的是,使用BHO插件,Internet浏览器要求在4.0以上版本;如果是文件浏览器,操作系统要求是Windows 95/98/2000或Window NT 4.0以上版本,并且Shell的版本在4.71以上。下面是支持BHO特性的系统一览表:

    Shell版本 操作系统版本 支持BHO
    4.00 Windows 95 and Windows NT 4.0(IE版本为 4.0) 仅IE4.0
    4.71 Windows 95 and Windows NT 4.0(IE版本为 4.0) IE和文件浏览器
    4.72 Windows 98 IE和文件浏览器
    5.00  Windows 2000 IE和文件浏览器

    接下去,笔者就来介绍一下如何开发BHO插件,开发环境为VC6.0(使用ATL),安装Platform SDK中的Internet Development SDK。首先,启动VC的ATL COM AppWizard,生成一个项目名为BhoPlugin,其余均采用默认设置。接着,我们就来分步详细阐述。
    第一步,增加一个ATL Object到该项目中。VC菜单Insert->New ATL Object…,在弹出的对话框中选择“Internet Explorer Object”,输入COM类名(在Short Name后输入EyeOnIE,其它各项会自动生成)。完成后,我们可以看到CEyeOnIE类有一个基类IObjectWithSiteImpl,这个就是实现IObjectWithSite接口的模版类。
    第二步,实现IObjectWithSite的接口方法。在这之前,我们要先定义几个成员变量:CComQIPtr<IWebBrowser2, &IID_IWebBrowser2> mWebBrowser2,(需要加入#include "ExDisp.h"),用以保存浏览器组件的指针;DWORD mCookie,用以保存与浏览器的连接ID。IObjectWithSite有两个接口方法:SetSite和GetSite。我们只需重载SetSite就行了。在EyeOnIE.h中增加函数声明STDMETHOD(SetSite)(IUnknown *pUnkSite),在EyeOnIE.cpp实现如下:
    STDMETHODIMP CEyeOnIE::SetSite(IUnknown *pUnkSite)
    {
    USES_CONVERSION;

    if (pUnkSite)
    {
    mWebBrowser2 = pUnkSite;
    if (mWebBrowser2)
    {
    return RegisterEventHandler(TRUE);
    }
    }
    return E_FAIL;
    }

    HRESULT CEyeOnIE::RegisterEventHandler(BOOL inAdvise)
    {
    CComPtr<IConnectionPoint> spCP;
    // Receives the connection point for WebBrowser events
    CComQIPtr<IConnectionPointContainer, &IID_IConnectionPointContainer> spCPC(mWebBrowser2);
    HRESULT hr = spCPC->FindConnectionPoint(DIID_DWebBrowserEvents2, &spCP);
    if (FAILED(hr))
    return hr;

    if (inAdvise)
    {
    // Pass the event handlers to the container
    hr = spCP->Advise(reinterpret_cast<IDispatch*>(this), &mCookie);
    }
    else
    {
    spCP->Unadvise(mCookie);
    }
    return hr;
    }
    我们可以看到,SetSite的参数实际上指向的是浏览器组件。在SetSite实现中,我们首先保存浏览器组件指针,然后将该BHO向浏览器注册为事件处理器。
    第三步,实现IDispatch接口方法。事件处理也就在IDispatch::Invoke中实现(各个事件的ID在ExDispID.h中定义)。BHO可能会接收到很多事件,但我们只需要响应我们感兴趣的那一部分。首先在EyeOnIE.h中增加该函数的声明,在EyeOnIE.cpp的实现中,笔者试着响应浏览器浏览一个地址之前发出的事件DISPID_BEFORENAVIGATE2,以此来实现简单的网址过滤功能,代码参考如下:
    STDMETHODIMP CEyeOnIE::Invoke(DISPID dispidMember,REFIID riid, LCID lcid,
    WORD wFlags, DISPPARAMS * pDispParams,
    VARIANT * pvarResult,EXCEPINFO * pexcepinfo,
    UINT * puArgErr)
    {
    USES_CONVERSION;

    if (!pDispParams)
    return E_INVALIDARG;

    switch (dispidMember)
    {
    //
    // The parameters for this DISPID are as follows:
    // [0]: Cancel flag - VT_BYREF|VT_BOOL
    // [1]: HTTP headers - VT_BYREF|VT_VARIANT
    // [2]: Address of HTTP POST data - VT_BYREF|VT_VARIANT
    // [3]: Target frame name - VT_BYREF|VT_VARIANT
    // [4]: Option flags - VT_BYREF|VT_VARIANT
    // [5]: URL to navigate to - VT_BYREF|VT_VARIANT
    // [6]: An object that evaluates to the top-level or frame
    // WebBrowser object corresponding to the event.
    //
    case DISPID_BEFORENAVIGATE2:
    {
    LPOLESTR lpURL = NULL;
    mWebBrowser2->get_LocationURL(&lpURL);
    char * strurl;
    if (pDispParams->cArgs >= 5 && pDispParams->rgvarg[5].vt == (VT_BYREF|VT_VARIANT))
    {
    CComVariant varURL(*pDispParams->rgvarg[5].pvarVal);
    varURL.ChangeType(VT_BSTR);
    strurl = OLE2A(varURL.bstrVal);
    }
    if (strstr(strurl, "girl.com"))
    {
    *pDispParams->rgvarg[0].pboolVal = TRUE;
    ::MessageBox(NULL, _T("该网页已被禁止!"),_T("Warning"),MB_ICONSTOP);
    return S_OK;
    }
    break;
    }

    case DISPID_NAVIGATECOMPLETE2:
    break;
    case DISPID_DOCUMENTCOMPLETE:
    break;
    case DISPID_DOWNLOADBEGIN:
    break;
    case DISPID_DOWNLOADCOMPLETE:
    break;
    case DISPID_NEWWINDOW2:
    break;
    case DISPID_QUIT:
    RegisterEventHandler(FALSE);
    break;
    default:
    break;
    }

    return S_OK;
    }
    我们看到,当用户浏览的新地址包含"girl.com"字符的时候,浏览器就会弹出一个警告对话框,并且停止进一步的动作。另外值得注意的是,在DISPID_QUIT事件(浏览器将要退出)的响应中,我们将BHO事件处理器进行了注销。
    第四步,因为BHO可能会被文件浏览器加载。如果我们不想这样,我们就要在DllMain中对加载者进行判断,参考如下:
    extern "C"
    BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
    {
    if (dwReason == DLL_PROCESS_ATTACH)
    {
    // Check who''s loading us.
    // If it''s Explorer then "no thanks" and exit...
    TCHAR pszLoader[MAX_PATH];
    GetModuleFileName(NULL, pszLoader, MAX_PATH);
    _tcslwr(pszLoader);
    if (_tcsstr(pszLoader, _T("explorer.exe")))
    return FALSE;

    _Module.Init(ObjectMap, hInstance, &LIBID_BHOPLUGINLib);
    DisableThreadLibraryCalls(hInstance);
    }
    else if (dwReason == DLL_PROCESS_DETACH)
    _Module.Term();
    return TRUE; // ok
    }
    最后,别忘了修改注册表文件,追加BHO的注册信息。在EyeOnIE.rgs文件的下面增加如下代码:
    HKLM
    {
    SOFTWARE
    {
    Microsoft
    {
    Windows
    {
    CurrentVersion
    {
    Explorer
    {
    ''Browser Helper Objects''
    {
    {6E28339B-7A2A-47B6-AEB2-46BA53782379}
    }
    }
    }
    }
    }
    }
    }
    注意,{6E28339B-7A2A-47B6-AEB2-46BA53782379}是笔者这个BHO的CLSID,如果你自己开发BHO,这里应该正确填写你的CLSID。

    好了,一个简单的BHO开发完成了。(可以到本人的个人主页 http://hqtech.nease.net 下载实例源代码。)BHO插件可以实现的功能还有很多,比如网页内容分析、IE界面定制等等。作为总结,笔者还要提醒读者一点的是,如果不想让BHO起作用了,可以注销该插件,如下格式:regsvr32 /u yourpath/yourbho.dll,或者直接在注册表中将“Browser Helper Objects”目录下注册的CLSID删掉。
    正文完

    展开全文
  • IE新功能:十大特色IE插件(转) Internet Explorer作为Windows操作系统自带的网络浏览器,是我们上网必备工具之一。伴随着IE的普及,第三方开发的IE插件程序也多了起来,这些IE插件成为浏览器功能的扩...
    IE新功能:十大特色IE插件(转)

     

    Internet Explorer作为Windows操作系统自带的网络浏览器,是我们上网必备工具之一。伴随着IE的普及,第三方开发的IE插件程序也多了起来,这些IE插件成为浏览器功能的扩展,IE插件丰富、实用的功能,让我们越来越离不开它们了。

    下面笔者向大家推荐10款极具特色的IE插件,它们各具特色的功能将使你的IE从此焕然一新。

    1. IE也玩多页面浏览:Microgarden WebTools

    微软自己也承认,包括IE6在内的老版本浏览器不支持多页面浏览是一个错误。IE的这一缺陷,也造就了Maxthon这样基于IE内核的多页面浏览器。IE渐受冷落的现状,让微软也急于改变,于是在新版MSN Toolbar中集成了多页面浏览功能。不过,仅仅为实现多页面浏览,而去安装功能多多的MSN Toolbar,并不是所有人都喜欢的。这里笔者建议大家试试WebTools,一个专为IE实现多页面浏览而开发的小程序。

    安装WebTools后,IE中会增添“WebTools”工具栏。如果在你的系统中没有显示,可以点击菜单“查看”→“工具栏”→“Microgarden WebTools”调用。

    正式使用前,大家最好稍做些设置,因为WebTools默认设置较保守,点击链接仍然打开的是新IE窗口,并没有在新的标签页面中打开。虽然你可以点击工具栏上“添加新标签”按钮添加标签,但这样不太方面。

    点击工具栏“WebTools”按钮,在下拉列表中选择“修改设置”,进入设置页面(如图1)。在“弹出窗口设置”中勾选“在新标签中打开弹出窗口”及“使用Shift键重定向新窗口到标签”。现在开始,所有的新窗口都会在新标签中打开,并且点击链接的同时按住“Shift”键,还可以强制链接在新标签页面中打开。

    IE新功能:十大特色IE插件(上)

    图1

    小技巧:将页面元素(如链接、图片),用鼠标直接拖拽到WebTools工具栏,可以在新标签中打开该页面元素。你不妨试试拖拽图片,你将发现,那些被网页强制缩小尺寸的图片,已经恢复100%显示了。

    2.玩转鼠标手势:Easy Go Back

    现在大家对“鼠标手势”都不会陌生,目前众多流行的浏览器都集成了该功能。只要按住鼠标右键不放,在网页中划出某种特定轨迹,就能在浏览器中实现后退、前进、刷新、关闭窗口等操作,它为我们浏览网页带来了许多便利。不过遗憾的是,IE浏览器是不支持“鼠标手势”的,要想在IE中页体会一把“鼠标手势”,安装Easy Go Back吧。

    Easy Go Back安装完成后会自动转入设置窗口,如图2所示:

    IE新功能:十大特色IE插件(上)

    图2

    在鼠标右键(Right Mouse Button)设置区中进行“鼠标手势”设置,软件支持定义4种“鼠标手势”,分别是:

    When moving left:鼠标手势向左移动(←)

    When moving right:鼠标手势向右移动(→)

    When moving up:鼠标手势向上移动(↑)

    When moving down:鼠标手势向下移动(↓)

    实现的控制功能主要包括:

    Open a New Browser Window:打开新的浏览器窗口

    Refresh:刷新

    Stop:暂停

    Close Browser Window:关闭浏览器窗口

    Close Window:关闭窗口

    Minimize Window:最小化窗口

    Show Instant Menu:显示菜单

    Go Back:后退

    Go Forward:前进

    Open a Link in a New Window:在新窗口中打开链接

    小贴士:如果你想在系统资源管理器中也使用部分鼠标手势(支持关闭窗口、最小化窗口和刷新等控制),请不要勾选“Active only in my web browser”。

    此外,软件支持定义鼠标中键(Middle Mouse Button)及其它鼠标键(Additional Mouse Buttons),你可以自行设置。设置完成后点击“Enable”按钮激活鼠标手势,点击“OK”按钮确认修改。

    3.保存网页很轻松:Net Snippets

    网络提供了浩如烟海的资料,我们可以很轻易的通过网络找到学习、生活所需要的各种实用资料,但如何保存这些资料却困扰着大家。用IE保存功能?IE信息收集效率不高,过不了多久,您就会忘记保存在那里了。

    现在Net Snippets这个知识管理软件进入了我们的视野,试试它的收藏魔法吧!

    安装Net Snippets后,重新打开IE,你会看到增加了一个新的工具栏及侧边栏。看上去平淡无奇?不过笔者保证你很快就会喜欢上它。

    Net Snippets结构其实非常简单:它对Windows资源管理器进行了非常微小的改动,它与资源管理器完全同步,但更加实用、易用。

    Net Snippets工具栏主要的保存选项有:添加选择部分内容(Add Selection)、添加全部页面(Add Entire Page)、添加链接(Add Link)、抓图(Capture Screen),下面来演示如何保存页面。

    你往常那样去浏览网站,遇到需要收藏的网页,点击工具栏“Add Entire Page”按钮,自动进入保存对话框(如图3)。对话框上方是一个可视化网页编辑器,也就是说我们可以在保存网页前对它进行编辑。为便于资料管理,Net Snippets提供了丰富的附加信息选项,可以自由填写注释(Comments)、关键字(Keywords)、定制信息(Custom Information)、摘要(Abstract)等资料。

     

     

    20060513150757580.jpg

    Net Snippets的抓图(Capture Screen)功能也非常不错,如果需要保存的只是网页中的一小部分,就抓图吧!支持的模式有:矩形(Rectangle)、椭圆(Ellipse)、三角形(Triangle)、平行四边形(Parallelogram)、不规则(Irregular Shape)等。

    通过Net Snippets保存的网页资料你可以通过菜单“查看”→“浏览器栏”→“Net Snippets”的方式来调用。在文件管理侧边栏中,所有保存的内容都在目录树中显示,你可以如同在资源管理器中操作文件一样去管理这些内容。

    4. Flash动画猎手:Flash Catcher

    现在网络中的Flash动画早就让人司空见惯,如果你经常需要保存网页中的Flash,那么Flash Catcher 就是专门为你而设计。只需要两次简单点击,就可以方便的下载Flash动画了,让如同保存网页图片一样容易。

    安装好Flash Catcher后,你的IE浏览器并不会有什么大改变,不过只要把鼠标放在Flash动画上面,你会发现出现了一个工具栏。如图4所示,工具栏中“磁盘”图标就是“保存”按钮,点击“保存”按钮,系统会弹出对话框,选择保存Flash动画的目录,点击“确定”即可。

    IE新功能:十大特色IE插件(上)

    图4

    如果一个网页上有多个Flash动画需要保存,那你可以在网页中调用鼠标右键菜单,选择“Save Flash With Flash Catcher”(或者点击IE工具栏上“Flash Catcher”按钮),进入保存对话框(如图5)。网页中所有Flash动画都会在左栏列表中显示,选择文件后,右面预览框显示动画预览。现在只需要在左栏选择文件,再单击“Save”按钮就可以批量保存动画了。

    IE新功能:十大特色IE插件(上)

    图5

    5.数码照片Exif信息轻松看:Exif Show

    对DC发烧友来说,在网上看到一幅幅精美的数码照片,了解拍摄者相机所使用的设置参数,最直接的办法就是查看照片Exif信息了。Exif Show可以让你直接在网页上查看数码照片的Exif信息,完全不必使用其它专门工具。

    Exif Show安装完成后,重新启动IE浏览器,在需要查看Exif信息的图片上调用鼠标右键,现在菜单中已经增加了“查看Exif信息”的项目。选择它,即可查看图片的Exif信息。

    如图6所示对话框中,相机厂商、型号、拍摄时间、图片尺寸、曝光时间、光圈、白平衡等资料一应俱全,在信息列表处单击鼠标右键,弹出选项菜单,可选择将Exif信息复制到剪贴板或另存为文本文件。

    IE新功能:十大特色IE插件(上)

    图6

    小提示:如果提示“该图片没有Exif信息”,说明该图片可能经过了某种形式的处理而丢失了Exif数据,或者图片本身就不包含Exif信息。

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14102/viewspace-114994/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/14102/viewspace-114994/

    展开全文
  • IE插件

    2019-03-15 01:13:05
    NULL 博文链接:https://blueskylan.iteye.com/blog/334460
  • IE浏览器安装Activex插件

    千次阅读 热门讨论 2019-02-02 14:33:27
    一、新建项目—&gt;类库,取名:ActiveXDemo 二、右键项目属性:应用属性==&gt;程序集信息=&gt;使程序集Com可见, 生成==&gt;输出==&gt;为com互操作注册;新建接口类取名:IObjectSafety...using Sy...

    一、新建项目—>类库,取名:ActiveXDemo
    在这里插入图片描述
    二、右键项目属性:应用属性==>程序集信息=>使程序集Com可见,
    生成==>输出==>为com互操作注册;新建接口类取名:IObjectSafety
    直接复制代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Runtime.InteropServices;//引入命名空间
    
    namespace ActiveXDemo
    {
        //[Guid("08B1EA29-0A20-46BE-8EE0-16A7505A317C")]
        //[ComImport, GuidAttribute("08B1EA29-0A20-46BE-8EE0-16A7505A317C")]
        [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);
        }
    }
    

    三、为控件创建GUID:工具→创建GUID,选5,点击复制
    在这里插入图片描述

         #region 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, [MarshalAs(UnmanagedType.U4)] ref int pdwSupportedOptions, [MarshalAs(UnmanagedType.U4)] 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, [MarshalAs(UnmanagedType.U4)] int dwOptionSetMask, [MarshalAs(UnmanagedType.U4)] 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;
            }
            #endregion
        }
    }
    

    四、制作成安装文件
    新建项目——其他项目类型——安装和部署——安装项目

    在这里插入图片描述
    五、右键安装项目——添加——项目输出

    在这里插入图片描述
    将我们的项目ActiveXDemo设为主输出;
    主输出文件上右键——属性;将Register属性设为vsdrpCOM;

    重新编译安装项目,打开安装项目所在目录,双击setup.exe文件或ActiveXDemoSetup.msi文件可以将浏览器插件安装到你的电脑;

    六、使用ActiveX插件
    新建一个Web项目或者一个Html文件,在需要使用浏览器插件的页面上加入以下代码:
    其中classid是新建的GUID编码

    <body>
        <object id="csharpActiveX" classid="clsid:08B1EA29-0A20-46BE-8EE0-16A7505A317C" width="100" height="150"></object>
        <!--<object classid="clsid:08B1EA29-0A20-46BE-8EE0-16A7505A317C" codebase="bin/setup.exe"
                width="200" height="40" id="helloBossma"></object>-->
        <form id="form1" runat="server">
            <div>
                <input type='button' onclick='csharpActiveX.Test()' value='我是按钮' />
            </div>
        </form>
    </body>
    <script type="text/javascript">
        var objCard = document.getElementById("csharpActiveX");
    
        if (objCard.object == null) {
            alert("csharpActiveX插件未安装!");
        }
        else {
            alert("已检测到csharpActiveX插件!");
        }
    </script>
    

    运行如下:
    在这里插入图片描述

    展开全文
  • IE插件】--如何制作?

    热门讨论 2019-02-13 21:48:57
    制作IE插件,我们共需要几个步骤,其一就是我们需要个类,然后类中需要添加个用户控件,然后我们将他们在VS中打包即可,其中重点就是我们需要这只GUID,这个下面说明了很好获取,全程需要代码量不超过10行。...

    说明:
    制作IE插件,我们共需要几个步骤,其一就是我们需要个类,然后类中需要添加个用户控件,然后我们将他们在VS中打包即可,其中重点就是我们需要这只GUID,这个下面说明了很好获取,全程需要代码量不超过10行。

    参照博客:内容主要借鉴前面的配置
    https://blog.csdn.net/u013176440/article/details/50266237




    制作过程:

    【首先我们右击项目,选择属性,然后勾选:】
    在这里插入图片描述
    【接着我们还在属性里,找到应用程序-程序集信息,然后勾选,并且这里有GUID。】
    在这里插入图片描述


    【接着我们开始打开建立类库,类库中添加用户控件】
    在这里插入图片描述

    在这里插入图片描述

    【我们在用户控件中添加一个button按钮】
    在这里插入图片描述



    【下面的这个获取其实在制作过程中的第二个图片中已经有了GUID号,如果找不到可以在这里制作】

    在这里插入图片描述



    【这个时候我们就是我们全程的代码部分,添加一个引用以及写上这个东西即可。】

    在这里插入图片描述


    【这个时候我们已经制作好了,接下来我们进行打包一下:】

    【首先我们需要新建项目:】在这里插入图片描述
    【选择打包项目右击选择add】
    在这里插入图片描述
    【再次界面我们直接点击确定即可】
    在这里插入图片描述

    【这个时候我们右键选择生成即可:】
    在这里插入图片描述

    【如果出现了问题,使用管理员身份运行这个程序,然后生成!!】
    在这里插入图片描述





    【此时我们打开我们生成的setup文件:(只有这个两个文件有用,必须在一块才行)】

    在这里插入图片描述

    【接着我们双击安装这个setup.exe 文件即可,接下来我们测试一下把:】

    【我们新建一个HTML网页:】
    在这里插入图片描述
    【网页代码如下:】

    <body>
        <object id="aaa" classid="clsid:338AD4DB-A07D-4FA7-97CF-3401318F3FA5" width="100%" height="100%"></object>
        <!--这里的clsid是对应我们的生成的GUID的,我们所有的GUID在本程序中保持一个-->
        <form id="form1" runat="server">
            <div>           
            </div>
        </form>
    </body>
    <script type="text/javascript">
        var objCard = document.getElementById("aaa");
    	
    	
        if (objCard.object ==null) {
    	
            alert("csharpActiveX插件未安装!");
        }
        else {
            alert("已检测到csharpActiveX插件!");
    		
        }
    </script>
    
    

    【我们用IE浏览器打开:接下来的第二个第三个图片在代码中更改即可,第一个是权限问题。】
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    【到此我们已经做好了这个DEmo,然后就在这个界面下填写我们需要的程序然后重新生成即可,对于我们的插件升级,请继续跟进哦:】
    在这里插入图片描述

    【此次成果借助代码:】

    主要借助制作过成:
    https://www.cnblogs.com/mooncher/p/6848626.html

    主要借助于生成插件的便利条件:
    https://www.cnblogs.com/wangiqngpei557/archive/2011/05/19/2051361.html

    总结:

    此次总结到我们的学习每个项目都需要先查为什么和百度,然后多借助于多个博客过程去学习,最后我们在动手实践,只要逻辑能走通代码也能走通,然后我们动起双手去进行博客的总结,这样就可以学会这个东西了。

    展开全文
  • IE插件

    2019-01-08 00:24:58
    http://blog.csdn.net/hbu_dcf/article/details/3498285
  • IE浏览器插件

    2018-05-05 23:29:28
    IE浏览器插件IETester.rar IE浏览器插件IETester.rar
  • IE插件

    2011-06-28 10:45:00
    IE插件主要有三种:1. ActiveX Control.2. Browser Helper Object (BHO).3. Browser Extensions.ActiveX Control 例如:Flash,银行专用输入框等等。Browser Extensions 例如:Zend Studio,浩方对战平台等等。...
  • IE插件技术 BHO C# IE 插件

    千次阅读 2013-08-16 11:29:00
    原文地址>:http://www.cnblogs.com/syxchina/archive/2010/12/18/2197267.html这类的文章比较少,尤其那种IE插件类型的,大多数就是个webbrowser而已,但网上还是有的转载一篇吧!在给出其他连接!用C#搭建IE BHO勾...
  • C++IE插件开发

    2011-03-30 13:22:00
    http://c.chinaitlab.com/vc/756789_5.html
  • IE插件开发

    千次阅读 2012-11-02 15:57:16
    又叫IE 扩展(Internet Explorer Extension),是一种通过使用IE的扩展机制实现的组件,该组件可以实现对现有IE功能的扩展。IE具有以下扩展方式: ... 工具栏(Toolbars):常见的IE插件就是各种IE工具栏。它是以I
  • C#编写IE插件的一些经验

    千次阅读 2011-05-12 11:10:00
    1. BeforeNavigate2不发生 在C#中这个事件好像是有问题,一直没有被触发过。这个有可能是.NET Framework 4.0的bug,因为在C++中调用这个事件是有效的。 除了等微软发补丁,我们自己没什么解决办法。...
  • 如何用JAVA做IE插件

    千次阅读 2005-10-17 23:08:00
    我想请教一下如何用JAVA做一个IE插件?请各位高手不吝赐教!感激不尽!!!!
  • IE插件在注册表中的相关位置

    千次阅读 2015-11-02 14:38:08
    ”Stats” 记录的就是IE曾经使用过的插件; ”Settings” 记录的就是在”管理加载项” 中禁用的IE 插件。 从“管理加载项”对话框中禁用某一插件,它的CLSID 马上就会显示在Settings 分支下面   ...
  • IE插件加载问题调试

    千次阅读 2012-11-13 14:30:03
    IE插件常见加载问题 IE安全设置不允许插件没有正确安装插件没有足够权限访问资源64位IE IE Active X插件相关设置 http://technet.microsoft.com/en-us/library/dd346862.aspx ...
  • IE插件BHO开发

    2012-05-23 17:50:48
    承接各种BHO,ActiveX,chrome扩展插件开发,微信showcodehr 1.VS2005 + IE8无法调试 因为IE8是多线程的。按照tab调试(原因百度) 打开: HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Main  添加一...
  • 反流技术之IE插件技术研究第一部分

    千次阅读 2007-01-05 15:55:00
    申明: 本文涉及到的技术只供参考研究之用,不可用于非法行为,本人不负责。A. 写在开始:继写了木马技术研究第一部分后, 我发现我的blog,PageRank上升了.最终发现中国的很多网站上摘抄我blog上的一些文章....
  • vs2010开发activex(MFC)控件/ie插件(二):js传参数  js传参数给activex控件。  先看demo效果: 在上一篇成功生成activex的基础上,通过添加生成的acttivex类的,属性,来达到获取外部js传参数的目的。 选择...
  • IE8能正常显示applet Java IE插件

    千次下载 热门讨论 2011-02-18 21:30:10
    Java IE插件,IE8能正常显示applet
  • vs2010制作基于mfc的ie插件

空空如也

1 2 3 4 5 ... 20
收藏数 119,978
精华内容 47,991
关键字:

ie插件