C#用什么开发_hbase写数据流程

C#用什么开发_hbase写数据流程最近公司程序需要嵌入各个浏览器的插件。首先

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

最近公司程序需要嵌入各个浏览器的插件。

首先需要支持的是IE的插件。又称为BHO(Browser Helper Object 浏览器辅助对象).

比起在C++中开发BHO,c#确实是更加简单

我的BHO主要为了实现通过点击浏览器有效下载链接,然后调用我们自己的程序(和迅雷差不多)

BHO主体程序时UrlTrack类。而这个类我们需要从接口IObjectWithSite继承。

IObjectWithSite的源码比较简单

[ComImport(), ComVisible(true), Guid("e479dd28-3784-49df-8c1b-2b0da2191a92"),
    InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IServiceProvider
    {
        [return: MarshalAs(UnmanagedType.I4)]
        [PreserveSig]
        int QueryService(ref Guid guidService, ref Guid riid, [MarshalAs(UnmanagedType.Interface)] out object ppvObject);
    }

Jetbrains全家桶1年46,售后保障稳定

上述的GUID可以自己手动生成一个

另外主体程序UrlTrack类

Getsite

 public int Getsite(ref Guid guid, out IntPtr ppvsite)
        {
            IntPtr punk = Marshal.GetIUnknownForObject(webBrowser);
            int hr = Marshal.QueryInterface(punk, ref guid, out ppvsite);

            Marshal.Release(punk);

            return hr;
        }

Setsite—按自己需求给webBrowser添加各种事件来监控IE的事件,并触发

public int Setsite(Object newSite)
        {
            if (newSite != null)
            {
                webBrowser = (SHDocVw.WebBrowser)newSite;
                webBrowser.FileDownload += new DWebBrowserEvents2_FileDownloadEventHandler(FileDownload);

                webBrowser.BeforeNavigate2 += new DWebBrowserEvents2_BeforeNavigate2EventHandler(webBrowser_BeforeNavigate2);
            }
            else
            {
                webBrowser.FileDownload -= new DWebBrowserEvents2_FileDownloadEventHandler(FileDownload);
                webBrowser.BeforeNavigate2 -= new DWebBrowserEvents2_BeforeNavigate2EventHandler(webBrowser_BeforeNavigate2);
            }

            return 0;
        }

RegisterBHO—BHO加入到注册表的方法

[ComRegisterFunction]
        public static void RegisterBHO(Type type)
        {
            RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(BHO_KEY_NAME, true);
            if (registryKey == null)
            {
                registryKey = Registry.LocalMachine.CreateSubKey(BHO_KEY_NAME);
            }
            string guid = type.GUID.ToString("B");
            RegistryKey bhoKey = registryKey.OpenSubKey(guid, true);
            if (bhoKey == null)
            {
                bhoKey = registryKey.CreateSubKey(guid);
            }
            // NoExplorer: dword = 1 prevents the BHO to be loaded by Explorer.exe   
            bhoKey.SetValue("NoExplorer", 1);
            bhoKey.Close();
            registryKey.Close();
        }

UnregisterBHO— BHO清理出注册表的方法

[ComUnregisterFunction]
        public static void UnregisterBHO(Type type)
        {
            RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(BHO_KEY_NAME, true);
            string guid = type.GUID.ToString("B");
            if (registryKey != null)
                registryKey.DeleteSubKey(guid, false);
        }

最后生成的DLL。我们可以通过系统的Regasm.exe程序来进度COM注册

命令主要是  Regasm /codebase XX.dll( regasm.exe在 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727,注册时把regasm.exe拷贝出来和dll放置同一个目录下,便可以进度注册)

然后你的IE浏览器就被绑架了。。

有个问题需要注意哦!!生成dll的同时,debug目录下还有Interop.SHDocVw.dll需要同时拷贝过去,否则BHO不会生效。。我自己被这里坑了2,3天,找错误。





好吧!我知道不给源码是不能满足你们这群狼的。在我的资源里面找一下

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234693.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JavaScript实现 满天星 导航栏

    说明分享一个满天星导航栏的效果,代码不多,但效果挺好看,先看看效果图吧。解释实现这个效果,需要掌握的知识不用很多,知道简单的CSS,会用JS获取元素,能绑定事件基本就足够了。好的,我们直接来看代码,注释已经写的很详细了,不想看有注释的,点这里。

    2022年4月8日
    51
  • cad快速选择命令快捷键_CAD快捷键,命令大全

    cad快速选择命令快捷键_CAD快捷键,命令大全一 常用 CTRL ALT 快捷键 ALT TK 如快速选择 ALT NL 线性标注 ALT VV4 快速创建四个窗口 ALT MUP 提取轮廓 Ctrl B 栅格捕捉模式控制 F9 Ctrl C 将选择的对象复制到剪切板上 Ctrl F 控制是否实现对象自动捕捉 F3 Ctrl G 栅格显示模式控制 F7 Ctrl J 重复执行上一步命令 Ctrl K 超级链接 Ctrl N 新建图形文件 C

    2025年9月6日
    12
  • word在试图打开文件时遇到错误,检查稳定或驱动器文件权限

    word在试图打开文件时遇到错误,检查稳定或驱动器文件权限查网上说属性—解除锁定,就好了我看很多人也是这问题,这种方案就可以解决。但我的是根本就没有“解除锁定”这一选项。我用的是2013版的word,但可以用office2010打开(我电脑上安装了两个office版本)。而且在其它电脑上office2013可以打开。我的解决方案是用office2010打开后把昨天写的部分删除,发现用office2013可以打开了。然后再从201…

    2022年5月10日
    100
  • 成功解决TypeError: Cannot cast array data from dtype(‘float64’) to dtype(‘U32’) according to the rule ‘

    成功解决TypeError: Cannot cast array data from dtype(‘float64’) to dtype(‘U32’) according to the rule ‘成功解决TypeError:Cannotcastarraydatafromdtype(‘float64’)todtype(‘<U32’)accordingtotherule’目录解决问题解决思路解决方法解决问题TypeError:Cannotcastarraydatafromdtype(‘float64’)todtype(‘<U32’)accordingtotherule’safe’…

    2022年5月6日
    372
  • SICP 1.20经验

    SICP 1.20经验

    2021年12月17日
    42
  • 计算机病毒论文结束语,计算机病毒论文结束语

    计算机病毒论文结束语,计算机病毒论文结束语计算机病毒论文结束语此频道包含与结束语和计算机和病毒相关的例文,免费给你写作计算机病毒论文总结提供有关参考文献资料。摘要:计算机是现代办公、学习的重要工具之一。对于高等院校来讲,计算机在日常教学和学生管理中都占有非常重要的地位,起到了重要的作用。不论是校园网。摘要:本研究计算机病毒的历史入手,介绍了病毒的种类、特点和工作原理,并对病毒的查杀和防范方法做了介绍。当前,计算机网络技术有着飞速的发展。…

    2022年5月4日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号