热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于异步可插入协议,必须用DLL来写吗?也就是EXE必须带个DLL?

如题,打算实现异步可插入协议,搜索了一下,似乎都是要实现一个COMDLL以供APP调用。只用EXE能否实现呢?应该怎么做呢?结合http:stackoverflow.comqu
如题,打算实现异步可插入协议,搜索了一下,似乎都是要实现一个COM DLL以供APP调用。

只用EXE能否实现呢?应该怎么做呢?

结合http://stackoverflow.com/questions/2013050/asynchronous-pluggable-protocols的代码,以及网络上的其他代码尝试如下:

private void CreateAPP()
        {
            IInternetSession session;
            Win32API.CoInternetGetSession(0, out session, 0);
            Guid guid = new Guid("c4d48290-d21f-415e-8d18-4b26cecca237");//勾选 使程序集COM可见,EXE的GUID
            session.RegisterNameSpace(new PluggableProtocolFactory(), ref guid, "http", 0, null, 0);//注册过滤器
        }

        [ComVisible(true)]
        public class PluggableProtocolFactory : IClassFactory
        {
            int IClassFactory.CreateInstance(object pUnkOuter, ref Guid riid, out object obj)
            {
                obj = Marshal.GetComInterfaceForObject(new clsAPPProtocol(), typeof(IInternetProtocol));
                return Hresults.S_OK;
            }

            int IClassFactory.LockServer(bool fLock)
            {
                return Hresults.S_OK;
            }
        }


class clsAPPProtocol: IInternetProtocol,IInternetProtocolInfo

{具体实现略}

各接口的声明略,clsAPPProtocol是实现了IInternetProtocol和IInternetProtocolInfo两个接口的类。程序启动的时候用CreateAPP()来注册过滤器。

程序启动后,IInternetProtocol和IInternetProtocolInfo两个接口的任何方法都没有被调用过。访问网页的时候直接报错“无法下载 不支持此接口”,无法访问任何网页。

不得已来此求助,期待回复,谢谢。

7 个解决方案

#1


做不了。异步可插入协议是做出来注入到其他URLMon程序的(比如IE)。

#2


楼主太好学了,但似乎没明白这个功能有什么用,怎么用

#3


没明白撸主表达的深意~
围观

#4


异步可插入协议(pluggable protocol)可实现内容过滤。比如下载图片之前得到通知……
一般实现都是做成个COM DLL以供exe调用,我不想带个DLL

#5


一般实现都是做成个COM DLL? 
我怎么认为这是唯一的实现方法呢, 有些路就是独木桥呢

#6


http://stackoverflow.com/questions/2013050/asynchronous-pluggable-protocols
这个似乎是实现了呢?

#7


看来如版主所说,是不能实现的了。

推荐阅读
author-avatar
朱志铭贤雯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有