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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • chmod命令用法_Linux修改权限命令chmod用法示例

    chmod命令用法_Linux修改权限命令chmod用法示例点击上方”Linux中文社区”关注,星标或者置顶18点00分准时推送,第一时间送达责编:中文妹|来自:Linux迷|链接:r6d.cn/tNnDLinux中文社区(ID:Linux-China)第47次推文图源:pexels上一篇:色情版“微信”背后的秘密正文Linux中的Chmod命令用于更改或分配文件和目录的权限。在Linux/Unix系统中,文件和目录的可访问…

    2022年6月18日
    26
  • java分页计算公式_java将list分页

    java分页计算公式_java将list分页1根据传入的参数计算1.1请求参数(currPage:当前页、pageSize:每页展示条数),根据这两个参数计算起始起始条数、截止条数 起始条数 firstIndex=(currPage-1)*pageSize 截止条数 lastIndex=currPage*pageSize1.2计算总页码(需获取总条数)pages=total%pageSize==0?total/pageSize:total/pageSize+1…

    2022年10月3日
    0
  • SQL PRO 激活码[在线序列号]「建议收藏」

    SQL PRO 激活码[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    41
  • python数据可视化从入门到实战_大数据可视化概念

    python数据可视化从入门到实战_大数据可视化概念真依然很拉风,简书《数据可视化》专栏维护者,里面有很多优秀的文章,本文便是其中一篇。文章总结了多种数据可视化图形,并简要介绍了各种图形的作用,能为科研工作者在数据可视化阶段提供新的思路,在…

    2022年10月2日
    1
  • XML 在SQLServer中的使用

    XML 在SQLServer中的使用

    2021年11月25日
    45
  • Spring Security OAUTH2 获取用户信息

    Spring Security OAUTH2 获取用户信息1.user-info-uri与token-info-uri作用:二者皆是为了checktoken,并且顺带返回了用户信息。配置信息位置在资源服务器上。解释:下面代码列举的都是token-info-uri,user-info-uri不解释。user-info-uri原理是在授权服务器认证后将认证信息Principal通过形参绑定的方法通过URL的方式获取用户信息。当然它也有配套的Us…

    2022年9月8日
    0

发表回复

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

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