作者:朱志铭贤雯 | 来源:互联网 | 2023-07-15 11:21
如题,打算实现异步可插入协议,搜索了一下,似乎都是要实现一个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 个解决方案
做不了。异步可插入协议是做出来注入到其他URLMon程序的(比如IE)。
楼主太好学了,但似乎没明白这个功能有什么用,怎么用
异步可插入协议(pluggable protocol)可实现内容过滤。比如下载图片之前得到通知……
一般实现都是做成个COM DLL以供exe调用,我不想带个DLL
一般实现都是做成个COM DLL?
我怎么认为这是唯一的实现方法呢, 有些路就是独木桥呢
http://stackoverflow.com/questions/2013050/asynchronous-pluggable-protocols
这个似乎是实现了呢?